gpt4 book ai didi

batch-file - 当文件不同时,批处理文件比较返回 0

转载 作者:行者123 更新时间:2023-12-04 21:54:55 26 4
gpt4 key购买 nike

我在 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
)

输出:

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

我在同一台服务器上的其他作业中有这个确切的代码指向不同的数据文件,并且它有效。有什么我可以尝试的想法吗?

最佳答案

如果您替换任何 %variable% 的值 在圆括号内,该值与输入圆括号之前的变量相同:

set var=Old value
( set var=New value & echo %var% )

以前的代码总是显示:旧值

要解决这个问题必须使用Delayed Expansion,即将变量用感叹号代替百分号,并在开头添加SETLOCAL命令:

setlocal EnableDelayedExpansion
set var=Old value
( set var=New value & echo !var! )

所有前面的描述也适用于 errorlevel 变量,所以在你的代码中用 !errorlevel! 替换所有 %errorlevel% 并插入前面的 SETLOCAL ...

关于batch-file - 当文件不同时,批处理文件比较返回 0,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9933254/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com