Batch file 将变量设置为“的结果”;查找“;批处理文件
我想根据文件中包含给定字符串的行数设置一个变量 比如:Batch file 将变量设置为“的结果”;查找“;批处理文件,batch-file,find,Batch File,Find,我想根据文件中包含给定字符串的行数设置一个变量 比如: set isComplete = 0 %isComplete% = find /c /i "Transfer Complete" "C:\ftp.LOG" IF %isComplete% > 0 ECHO "Success" ELSE ECHO "Failure" 或: 显然,这两种选择都不起作用 谢谢。从命令行 for /f "tokens=3" %f in ('find /c /i "Transfer Complete" "C:
set isComplete = 0
%isComplete% = find /c /i "Transfer Complete" "C:\ftp.LOG"
IF %isComplete% > 0 ECHO "Success" ELSE ECHO "Failure"
或:
显然,这两种选择都不起作用
谢谢。从命令行
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
您不需要使用
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
)
这太棒了。但是,我应该提到,我需要这个来处理有空间的路径。这些引语似乎没有什么帮助。啊。所以对于/f“tokens=3”%%f in('find/c/i“Transfer Complete”“c:\test path\ftp.LOG“'),请将isComplete设置为%%f将isComplete设置为“path\ftp.LOG:”,我猜错误是由空格引起的。您需要使用for命令的“usebackq”选项,以便可以在路径周围加引号:for/f“usebackq tokens=3”%%f in(
find/c/i)“传输完成”C:\test path\ftp.log“
)确实设置了isComplete%%事实上,我现在期望计数为2(传输了两个文件)…因此两次出现“传输完成”=成功。如果%isComplete%>0,则有点混乱;这是您真正想要的如果%isComplete%eq 2
?
@echo OFF
@find /c /i "Transfer Complete" "C:\test path\ftp.LOG" > NUL
if %ERRORLEVEL% EQU 0 (
@echo Success
) else (
@echo Failure
)