im创建一个批处理文件,该文件检查日志文件是否比以前大,如果不是,它将调用监视器开始,但是我无法使if块正常工作,它位于if定义的块中,但没有转到else部分,它总是失败,因为它没有值。
我尝试使用延迟扩展,但是它要么没有值,要么尝试使用变量名求值,但是如果我在if定义的块中仅使用一行,则可以使用。
REM @echo off
REM SETLOCAL EnableDelayedExpansion
FOR /F %%i in ('dir /b/a-d/od/t:c omcp_*.log') do set FILENAME=%%i
FOR /F "usebackq" %%A IN ('%FILENAME%') DO set SIZE=%%~zA
IF DEFINED LASTFILENAME (
IF %FILENAME% == %LASTFILENAME% (
if DEFINED LASTSIZE (
IF %SIZE%==%LASTSIZE% ( echo "subir monitor") else ( echo "no subir monitor" )
)
)
)
set LASTFILENAME=%FILENAME%
set LASTSIZE=%SIZE%
REM setx LASTFILENAME=%FILENAME%
REM setx LASTSIZE=%SIZE%
它应该在第一次运行中设置变量,并在第二次运行中显示“无子监视器” 谢谢
答案 0 :(得分:0)
对于每个比较,请使用IF "%FILENAME%" == "%LASTFILENAME%"
(-用引号引起的值可以克服未定义的问题,从而产生语法错误。它还可以容纳文件名中的空格,并且可以删除if定义的保护符。BTW- set "FILENAME=%%i"&set "size=%%~zi"
应该适当设置大小-用引号确保分配的值正确定界