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

Mat*_*ttH 10 batch-file find

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

就像是:

set isComplete = 0
%isComplete% = find /c /i "Transfer Complete" "C:\ftp.LOG"
IF %isComplete% > 0 ECHO "Success" ELSE ECHO "Failure"
Run Code Online (Sandbox Code Playgroud)

要么:

set isComplete = 0
find /c /i "Transfer Complete" "C:\ftp.LOG" | %isComplete%
IF %isComplete% > 0 ECHO "Success" ELSE ECHO "Failure"
Run Code Online (Sandbox Code Playgroud)

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

谢谢.

Pre*_*gha 15

从命令行

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

从批处理脚本

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


Pat*_*uff 12

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

  • 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
)
Run Code Online (Sandbox Code Playgroud)