我之前的问题是从文本文件中提取多行,现在工作正常,但它仍然需要一些改进来修剪前导和尾随(棘手的部分)空格/制表符空格,并且通过 Stackoverflow 搜索我找到了很多答案,让我结合起来我的最后一个批处理脚本,但从所有这些来看,它可能不是那么正确。
Details.txt(源文件)
line not needed, Copy and help with these command prompt:
line not needed:
(whitespace)(whitespace)some text not needed Copy "c:\.." a b c(white space)
line not needed:
line not needed, Copy and help with these command prompt:
(whitespace)Copy "d:\.." a c c(tab space)
line not needed
(tab space)(tab space)Copy "e:\.." a a c(whitespace)
line not needed
op.txt(输出文件)
Copy "c:\.." a b c
Copy "d:\.." a c c
Copy "e:\.." a a c
让我们看看第一个批处理脚本。(没有修剪前导和尾随空间)
@ECHO OFF
SETLOCAL ENABLEDELAYEDEXPANSION
SET source="details.txt"
IF EXIST %source% (
FIND /i "copy " <%source% |FIND "\" >op.txt
) ELSE (
Exit
)
修剪前导和尾随空间的组合脚本给了我两个输出(没什么大不了的)。但是,如果我们可以在输出和代码上都缩短它,那就太好了。
@ECHO OFF
SETLOCAL ENABLEDELAYEDEXPANSION
SET source="details.txt"
IF EXIST %source% (
FIND /i "copy " <%source% |FIND "\" >op.txt
>op2.txt (
FOR /f "delims=" %%A IN (op.txt) DO (
SET "ln=%%A"
SET str=!ln:*Copy=Copy!
FOR /l %%b IN (1,1,31) DO (
IF "!str:~-1!"==" " SET str=!str:~0,-1!
IF "!str:~-1!"==" " SET str=!str:~0,-1!
)
ECHO !str!
)
)
) ELSE (
Exit
)
它实际上适用于我的大多数源文件情况,但我确信这可能没有很好的编码。所以我想要求以某种方式改进这个批处理脚本,比如输出或者更短/更简单的版本。
谢谢, foxidrive 开始并帮助解决我的第一个问题。
David 的更新版本(现在有所有输出)
@ECHO OFF
SETLOCAL
SET "sourceFile=details.txt"
SET "outputFile=opDavid.txt"
@ECHO OFF > "%outputFile%"
IF EXIST "%sourceFile%" FOR /f "delims=" %%A IN ('FIND /i "copy " ^<%sourceFile% ^|FIND "\"') DO CALL :Trim %%A >>%outputFile%
ENDLOCAL
EXIT /b 0
:Trim
ECHO(%*
EXIT /b 0
对不起我的英语,就像我的编码一样糟糕