gpt4 book ai didi

batch-file - 在 Windows 批处理文件中设置错误级别

转载 作者:行者123 更新时间:2023-12-02 23:54:48 28 4
gpt4 key购买 nike

我正在编写一个批处理脚本,它将循环遍历文本文件的每一行,(每行包含一个文件名)检查文件是否存在,然后运行该文件并移动它。

这是我的批处理脚本:

REM Loop through each line of input.txt
FOR /F "tokens=1-3 delims=, " %%i IN (./ready/input.txt) DO (
ECHO.
ECHO.
ECHO.
ECHO Check %%i exists, set error flag if it doesnt
if not exist .\ready\%%i set errorlevel=2
echo return code is %errorlevel%

ECHO Run %%i if it exists
if errorlevel 0 call .\ready\%%i

ECHO Move %%i to archive if no error occured
if errorlevel 0 copy .\ready\%%i .\archive\%mydate%_%mytime%_%%j_%%k_%%i

ECHO Copy line of text to the new output.txt file if an error occured
if %errorlevel% NEQ 0 >>output.txt %%i, %%j, %%k
)

这是输出: enter image description here

我不明白为什么“if errorlevel”没有按预期工作...如果文件不存在(如本例中不存在),它不应该尝试运行该文件,它不应该复制文件,它应该回显 2 而不是 0

编辑 1:我正在阅读另一篇 SO Post关于“延迟环境变量扩展”我不确定这个问题是否相关

最佳答案

ERRORLEVEL%ERRORLEVEL%是两个不同的变量。这意味着您的代码带有 echo return code is %errorlevel%if %errorlevel% NEQ 0 >>output.txt %%i, %%j, %%k可能是错误的。

ERRORLEVEL是内置的,用于获取最后一个命令的结果。您可以像这样使用它:

IF ERRORLEVEL 1 ECHO error level is 1 or more

ERRORLEVEL 无法设置,就像 bash 不允许你 set ?= ...

%ERRORLEVEL%是一个环境变量。如果%ERRORLEVEL%设置后,当您使用 %ERRORLEVEL% 时,它会在您的脚本中使用。如果%ERRORLEVEL%未设置并且如果命令扩展已启用,那么它回退ERRORLEVELERRORLEVEL 更新%ERRORLEVEL% .

Raymond Chen 有一篇很好的博客文章: ERRORLEVEL is not %ERRORLEVEL% 。这个答案中的一些内容是无耻地摘自其中的。

关于batch-file - 在 Windows 批处理文件中设置错误级别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20892882/

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