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

时间:2014-08-01 06:00:24

标签: batch-file

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

: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
   )

我在这里做错了什么。 :(

此致 拉夫

3 个答案:

答案 0 :(得分:5)

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

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

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

答案 1 :(得分:2)

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

答案 2 :(得分:0)

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

 if %size% EQU %parsize% (