for /f "tokens=3" %%f in ('find /c /i "apples" "test.txt"') do set varMWG=%%f
REM echo %varMWG%
if %varMWG% EQU 1 (
@echo TRUE
) else (
@echo FALSE
)
而不是回显TRUE或FALSE我想在找到字符串时回显变量行,如果找不到则仍然回显FALSE。
test.txt包含
fdgsdf
hgsfrtgyr
apples
fdsgfghs
erwyuweu
答案 0 :(得分:1)
如果没有行匹配(换句话说,你不需要变量),你只需回显匹配的行或回显FALSE,那么
findstr /ilc:"apples" "test.txt" || echo FALSE
请记住,可能有多行与您的搜索匹配。
如果您需要包含最后找到的行的变量,则:
set "varMWG="
for /f "delims=" %%S in ('findstr /ilc:"apples" "test.txt"') do set "varMWG=%%S"
if defined varMWG (echo %varMWG%) else echo FALSE
注意 - 延迟扩展会更安全。使用常规扩展的ECHO可能会失败,具体取决于varMWG的内容。
如果您需要包含第一个找到的行的变量,则:
set "varMWG="
for /f "delims=" %%S in ('findstr /ilc:"apples" "test.txt"') do (
set "varMWG=%%S"
echo %%S
goto :break
)
:break
if not defined varMWG echo FALSE
最后一个选项不需要延迟扩展。
答案 1 :(得分:0)
如果通过“回显变量行”表示回显搜索字符串“apples”,那么以下代码就足够了:
@echo off
for /f "tokens=* delims= " %%f in (test.txt) do (
if %%f EQU apples (echo %%f
) else echo false
)
输出:
false
false
apples
false
false