gpt4 book ai didi

windows - 批处理文件无法抑制 "terminate job"

转载 作者:可可西里 更新时间:2023-11-01 11:27:20 24 4
gpt4 key购买 nike

我正在尝试打开第二个批处理文件并检测它是否正常退出或由用户关闭(ctrl+c 或 x 或窗口终止等。)所以我使用以下示例 Batch run script when closed

@Echo off
set errorlevel=1

start /w %comspec% /c "mode 70,10&title Folder Confirmation Box&color 1e&echo.&echo. Else the close window&pause>NUL&exit 12345"
echo %errorlevel%
pause

我试图让第一个批处理等待 (/W),因为我稍后会检查错误级别但是在关闭第二个批处理文件后,我得到了一个错误,比如 ^cterminate batch job (Y/N)?

我尝试了 https://superuser.com/questions/35698/how-to-supress-terminate-batch-job-y-n-confirmation 上的建议

脚本

rem Bypass "Terminate Batch Job" prompt.
if "%~2"=="-FIXED_CTRL_C" (
REM Remove the -FIXED_CTRL_C parameter
SHIFT
) ELSE (
REM Run the batch with <NUL and -FIXED_CTRL_C
CALL <NUL %1 -FIXED_CTRL_C %*
GOTO :EOF
)

效果不错那么有没有办法从同一个批处理文件开始并避免终止呢?或者我是否必须从同一批处理创建一个新批处理并调用它?(我不希望他们也看到该文件)

最佳答案

  1. 不要为 volatile environment variable 赋值像 errorlevel 使用 set 命令。这样做会导致它在当前上下文中变得不稳定。
  2. Always use titleSTART "title"[/D path] [options] "command"[parameters] 中。
  3. start ""/W cmd/c "anycommand&exit/B 12345" 总是 返回 12345 退出代码。这是因为所有带有 & 串联命令的 cmd 行都是在解析时准备的(与括号中的命令 block 相同),然后完整地、不可分割地运行。省略 &exit/B 12345 以从 anycommand 获取正确的退出代码,或将其替换为类似 start ""/W cmd/c "anycommand&&exit/B 12345| |exit/B 54321" 仅获取成功/失败指示。

下一个代码片段可能会有所帮助:

@ECHO OFF
SETLOCAL enableextensions

set "_command=2nd_batch_file.bat"
:: for debugging purposes
set "_command=TIMEOUT /T 10 /NOBREAK"

:: raise errorlevel 9009 as a valid file name can't contain a vertical line
invalid^|command>nul 2>&1

echo before %errorlevel%
start "" /w %comspec% /C "mode 70,10&title Folder Confirmation Box&color 1e&echo(&echo( Else the close window&%_command%"
echo after %errorlevel%

输出 显示示例 %_command% 退出代码:01 如果正确结束但-1073741510 如果被 Ctrl+CCtrl+Break 强制终止或红色×

==>D:\bat\SO\31866091.bat<nul
before 9009
after 0

==>D:\bat\SO\31866091.bat<nul
before 9009
after 1

==>D:\bat\SO\31866091.bat<nul
before 9009
^CTerminate batch job (Y/N)?
after -1073741510

==>

关于windows - 批处理文件无法抑制 "terminate job",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31866091/

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