将变量设置为批处理文件中“查找”的结果

时间:2009-05-06 18:51:24

标签: batch-file find

我想根据文件中包含给定字符串的行数来设置变量。

类似的东西:

set isComplete = 0
%isComplete% = find /c /i "Transfer Complete" "C:\ftp.LOG"
IF %isComplete% > 0 ECHO "Success" ELSE ECHO "Failure"

或者:

set isComplete = 0
find /c /i "Transfer Complete" "C:\ftp.LOG" | %isComplete%
IF %isComplete% > 0 ECHO "Success" ELSE ECHO "Failure"

显然,这些选项都不起作用。

感谢。

2 个答案:

答案 0 :(得分:15)

从命令行

for /f "tokens=3" %f in ('find /c /i "Transfer Complete" "C:\ftp.LOG"') do set isComplete=%f 

来自批处理脚本

for /f "tokens=3" %%f in ('find /c /i "Transfer Complete" "C:\ftp.LOG"') do set isComplete=%%f 

答案 1 :(得分:12)

您不需要使用for命令; find会根据结果将ERRORLEVEL设置为其中一个值:

  • 0,至少找到一场比赛。
  • 1,未找到匹配项。
  • 2或更多,发生错误。

由于看起来您只想查看转移是否已完成,而不是字符串出现的总次数,您可以执行以下操作:

@echo OFF

@find /c /i "Transfer Complete" "C:\test path\ftp.LOG" > NUL
if %ERRORLEVEL% EQU 0 (
    @echo Success
) else (
    @echo Failure
)