10

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

就像是:

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"

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

谢谢。

4

2 回答 2

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 
于 2009-05-06T19:03:31.040 回答
14

您不需要使用该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
)
于 2009-05-07T00:39:28.547 回答