比较批处理脚本中的两个数字

对不起,如果它似乎是一个非常基本的问题,但我不能比较两个文件大小,其中一个文件正在连续写在批处理脚本,它不超越,如果语句,只是卡在那里,没有做任何事情出来。

:START copy C:\Users\Admin\ping.txt C:\Users\Admin\ping.partial set file="C:\Users\Admin\ping.txt" set parfile="C:\Users\Admin\ping.partial" ping -n 5 127.0.0.1 > nul FOR %%A IN (%file%) DO set size=%%~zA FOR %%B IN (%parfile%) DO set parsize=%%~zB echo %size% echo %parsize% if %size% EQU %parsize% ( ECHO file is complete > C:\Users\Admin\status.log ping -n 5 127.0.0.1 > nul ) else ( echo incomplete > C:\Users\Admin\status.log ping -n 5 127.0.0.1 > nul goto start ) 

我在这里做错了什么。 🙁

问候,Gaurav

 if cond ( ... ) else ( ... ) if cond (...) else (...) if cond (...) else command if cond (...) else ( .... ) if cond ( .... ) else command 

括号的位置很重要。 if左括号需要与if命令位于同一行。 if右括号需要与else子句(如果存在)在同一行中。 else开括号需要和else子句在同一行。

if %size% EQU %parsize%会导致错误

 if opp condition opp2 command 

如果你修改后,这将工作

 IF %size% == %parsize% ECHO file is complete > C:\Users\finoy\status.log ping -n 5 127.0.0.1 > nul else echo incomplete > C:\Users\finoy\status.log ping -n 5 127.0.0.1 > nul 

一个问题是if比较之后的括号 – 它必须在同一行:

  if %size% EQU %parsize% (