Mik*_*keL 2 batch-file file-comparison
我在Windows 2003服务器上使用调度系统,该系统要求批处理文件运行不同的作业.我有一个工作,检查文件是否存在,比较文件是否为空,然后根据结果做一些事情.每次运行时,返回的错误级别为0,但文件不同.我期待看到1回归.
我已经验证了文件的位置,一个文件有内容,另一个文件是空的.我已经设置了提示,他们都说%ERRORLEVEL%是0.我甚至将文件移动到批处理作业的同一目录中,但它们仍显示0.
代码:
echo %ERRORLEVEL%
IF EXIST data.DON (
echo before %ERRORLEVEL%
FC data.DON ZERO.SEQ
echo after %ERRORLEVEL%
IF %ERRORLEVEL% EQU 1 GOTO :PROCESS
)
Run Code Online (Sandbox Code Playgroud)
输出:
16:37:08.12 Thu 03/29/2012
>IF EXIST data.DON (
echo before 0
FC data.DON ZERO.SEQ
echo after 0
IF 0 EQU 1 GOTO :PROCESS
)
before 0
Comparing files data.DON and ZERO.SEQ
***** data.DON
Name|Date|Location
***** ZERO.SEQ
*****
after 0
Run Code Online (Sandbox Code Playgroud)
我在同一服务器上指向不同数据文件的其他作业中有这个确切的代码,并且它可以工作.我能尝试什么想法?
如果在括号内替换任何%variable%的值,则该值与输入括号前的变量相同:
set var=Old value
( set var=New value & echo %var% )
Run Code Online (Sandbox Code Playgroud)
以前的代码总是显示:旧值
要解决此问题,必须使用延迟扩展,即将变量括在感叹号中而不是百分比,并SETLOCAL在开头添加命令:
setlocal EnableDelayedExpansion
set var=Old value
( set var=New value & echo !var! )
Run Code Online (Sandbox Code Playgroud)
之前的所有描述也适用于errorlevel变量,因此在代码中替换all %errorlevel%by !errorlevel!并插入前一个SETLOCAL ....
| 归档时间: |
|
| 查看次数: |
5416 次 |
| 最近记录: |