Batch file 通读每一行,并使用批处理文件检查行是否以特定字符串开头
我正在尝试读取out.txt中的所有行,并检查该行是否以单词No开头。如果该行以No开头,我将在文件1.txt中回显yes,在文件2.txt中回显No 我正在使用以下代码:Batch file 通读每一行,并使用批处理文件检查行是否以特定字符串开头,batch-file,cmd,Batch File,Cmd,我正在尝试读取out.txt中的所有行,并检查该行是否以单词No开头。如果该行以No开头,我将在文件1.txt中回显yes,在文件2.txt中回显No 我正在使用以下代码: for /F "tokens=*" %%A in (out.txt) do ( IF "%%A:~0,2%"=="No" ( @echo yes >> 1.txt )else ( @echo no >> 2.txt ) ) 但这对我来说不管用。似乎if语句工作不正常。有人能告诉我代码是否有
for /F "tokens=*" %%A in (out.txt) do (
IF "%%A:~0,2%"=="No" (
@echo yes >> 1.txt
)else (
@echo no >> 2.txt
)
)
但这对我来说不管用。似乎if语句工作不正常。有人能告诉我代码是否有问题吗?。我尝试回显%%A,并正在按预期读取这些行 不能对元变量进行子串
试一试
它在文件中查找/b以/L开头的任何一行,并输出找到的任何一行。>nul处理输出。如果找到字符串,errorlevel设置为0,否则设置为非零 这会更快:
@setlocal ENABLEEXTENSIONS
@set prompt=$G
@for /F "tokens=*" %%A in (out.txt) do @call :DoIt "%%A"
@exit /b 0
:DoIt
@set _line=%~1
@set _linePrefeix=%_line:~0,2%
@if "%_linePrefeix%" equ "No" (@echo yes >> 1.txt) else (@echo no >> 2.txt)
@exit /b 0
Magoo的解决方案和这一个都需要两个进程,但这一个涉及一个已加载到内存cmd.exe中的可执行映像。有趣且简单,但它需要调用findstr.exe。我不能说我看到调用的速度比只在FOR命令中执行所有工作快。您可以在代码中去掉一个SET命令,只使用带有IF比较的子字符串。
@setlocal ENABLEEXTENSIONS
@set prompt=$G
@for /F "tokens=*" %%A in (out.txt) do @call :DoIt "%%A"
@exit /b 0
:DoIt
@set _line=%~1
@set _linePrefeix=%_line:~0,2%
@if "%_linePrefeix%" equ "No" (@echo yes >> 1.txt) else (@echo no >> 2.txt)
@exit /b 0