我正在尝试阅读out.txt
中的所有行,并检查是否以单词No
开头。如果该行以No
开头,我回复yes
以归档1.txt
,否则no
回复2.txt
我使用下面的代码:
for /F "tokens=*" %%A in (out.txt) do (
IF "%%A:~0,2%"=="No" (
@echo yes >> 1.txt
)else (
@echo no >> 2.txt
)
)
但它的尼克为我工作。似乎if语句不能正常工作。有人可以告诉我代码是否有问题?我试图回应%%A
并按预期读取这些行。
答案 0 :(得分:1)
您无法对元变量进行子串。
尝试
findstr /b /L "No" out.txt >nul
if errorlevel 1 (
echo not found
) else (
echo found
)
在文件中找到/b
以文字/L
开始No
并输出找到的任何行。 >nul
处理输出。如果找到字符串,errorlevel
设置为0
,否则设置为非零。
答案 1 :(得分: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)。