代码不能用于检查批处理文件中的文件大小

时间:2012-03-06 17:47:10

标签: if-statement batch-file

:loop2
ping 1.1.1.1 -n 1 -w 10000 >nul
for %%I in (mesh0.1bb_intact.f06) do set %%checka=%%~zI
ping 1.1.1.1 -n 1 -w 20000 > nul
for %%I in (mesh0.1bb_intact.f06) do set %%checkb=%%~zI
IF NOT %checkb% EQU %checka% goto :loop2

这是一个批处理文件,我已经使用double %%分配checka和checkb。 但是我如何修复IF NOT? 如果它们不相等,那么请等到它们相等......如果有效,我希望我的代码能做什么。但它只是在IF声明结束,可能说这个时候没有预料到blahblahblah(我不知道因为它关闭得太快) 谢谢你的帮助。

2 个答案:

答案 0 :(得分:3)

您对何时使用%%感到困惑。设置环境变量时,set varName=value。你的varName只是一个字符串,不需要%。您的值在FOR I变量中,您在批处理文件中,因此您使用%%~zI

:loop2
ping 1.1.1.1 -n 1 -w 10000 >nul
for %%I in (mesh0.1bb_intact.f06) do set checka=%%~zI
ping 1.1.1.1 -n 1 -w 20000 > nul
for %%I in (mesh0.1bb_intact.f06) do set checkb=%%~zI
IF NOT %checkb% EQU %checka% goto :loop2

答案 1 :(得分:1)

作为替代方法,请参阅HELP SETHELP CALL并尝试以下代码...

call :getfilesize file1 checka
call :getfilesize file2 checkb
IF %checka% LSS %checkb% (
  echo size of file1 %checka% less than size of file2 %checkb%
) ELSE (
  echo size of file1 %checka% greater than or equal size of file2 %checkb%
)
goto :eof
:getfilesize
set %2=%~z1
goto :eof