java获取errorlevel_在Windows批处理文件中设置errorlevel

@ECHO OFF

SETLOCAL

DEL output.txt 2>nul

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 exist .\ready\%%i (set "errorflag=") ELSE (set errorflag=2)

CALL echo return code is %%errorflag%%

ECHO Run %%i if it exists

if NOT DEFINED errorflag (

call .\ready\%%i

ECHO Move %%i to archive if no error occured

if errorlevel 1 (SET errorflag=3) ELSE (ECHO 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 DEFINED errorflag >>output.txt ECHO %%i, %%j, %%k

)

GOTO :EOF

这是一个重写的程序 .

注意: output.txt 在开始时被删除,否则 >> 将附加到任何现有文件 . 2>nul 如果删除失败(例如文件不存在),则会抑制错误消息

在块语句 (a parenthesised series of statements) 中,解析ENTIRE块并执行 THEN . 在块执行之前,块中的任何_844785都将被该变量的值 AT THE TIME THE BLOCK IS PARSED 替换 .

因此, IF (something) else (somethingelse) 将在遇到 IF 时使用 %variables% 的值执行 .

解决此问题的两种常用方法是1)使用 setlocal enabledelayedexpansion 并使用 !var! 代替 %var% 来访问 var 或2的中间值,以调用子例程以使用更改的值执行进一步处理 .

因此请注意 CALL ECHO %%var%% 的使用,它显示 var 的更改值 . CALL ECHO %%errorlevel%% 显示,但遗憾的是RESETS错误级别 .

如果 var 是 CURRENTLY ,则 IF DEFINED var 为真 .

ERRORLEVEL 是一个特殊的可变形名称 . 它由系统设置,但如果由用户设置,则用户指定的值将覆盖系统值 .

如果 errorlevel 是n OR GREATER THAN n ,则 IF ERRORLEVEL n 为TRUE . IF ERRORLEVEL 0 因此总是如此 .

语法 SET "var=value" (其中value可以为空)用于确保行末尾的任何杂散空格不包含在指定的值中 .

所需命令仅用于测试目的 . 在确认命令正确后,将 ECHO COPY 更改为 COPY 以实际复制文件 .

我使用了以下 input.txt :

seterr1.bat, J1, K1

seterr5.bat,J2,K2

seterr0.bat,J3 K3

seterr5.bat, J4, K4

notexist.bat, J5, K5

使用包含的现有文件 seterr*.bat

@ECHO OFF

EXIT /b 1

(最后一行中的 1 确定 errorlevel 返回)

并收到结果输出:

Check seterr1.bat exists, set error flag if it doesnt

return code is

Run seterr1.bat if it exists

Move seterr1.bat to archive if no error occured

Copy line of text to the new output.txt file if an error occured

Check seterr5.bat exists, set error flag if it doesnt

return code is

Run seterr5.bat if it exists

Move seterr5.bat to archive if no error occured

Copy line of text to the new output.txt file if an error occured

Check seterr0.bat exists, set error flag if it doesnt

return code is

Run seterr0.bat if it exists

Move seterr0.bat to archive if no error occured

copy .\ready\seterr0.bat .\archive\__J3_K3_seterr0.bat

Copy line of text to the new output.txt file if an error occured

Check seterr5.bat exists, set error flag if it doesnt

return code is

Run seterr5.bat if it exists

Move seterr5.bat to archive if no error occured

Copy line of text to the new output.txt file if an error occured

Check notexist.bat exists, set error flag if it doesnt

return code is 2

Run notexist.bat if it exists

Copy line of text to the new output.txt file if an error occured

请注意,COPY仅仅是我之前提到过的 .

和output.txt

seterr1.bat, J1, K1

seterr5.bat, J2, K2

seterr5.bat, J4, K4

notexist.bat, J5, K5

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值