标签: errorlevel

批处理文件'choice'命令的errorlevel返回0

我正在尝试创建一个批处理文件,根据正在执行的Windows版本执行不同的"选择"命令.Windows 7和Windows XP之间的选择命令语法不同.

Choice命令为Y返回1,为N返回2.以下命令返回正确的错误级别:

Windows 7的:

choice /t 5 /d Y /m "Do you want to automatically shutdown the computer afterwards "
echo %errorlevel%
if '%errorlevel%'=='1' set Shutdown=T
if '%errorlevel%'=='2' set Shutdown=F
Run Code Online (Sandbox Code Playgroud)

Windows XP:

choice /t:Y,5 "Do you want to automatically shutdown the computer afterwards "
echo %ERRORLEVEL%
if '%ERRORLEVEL%'=='1' set Shutdown=T
if '%ERRORLEVEL%'=='2' set Shutdown=F
Run Code Online (Sandbox Code Playgroud)

但是,当它与检测Windows操作系统版本的命令结合使用时,errorlevel在我的Windows XP和Windows 7代码块中的选择命令之后的AN之前返回0.

REM Windows XP
ver | findstr /i "5\.1\." > nul
if '%errorlevel%'=='0' (
set errorlevel=''
echo %errorlevel%
choice /t:Y,5 "Do you …
Run Code Online (Sandbox Code Playgroud)

command file batch-file choice errorlevel

7
推荐指数
1
解决办法
9046
查看次数

无法从批处理脚本中的失败MOVE命令获取错误级别

我对这个论坛很新,所以我首先要感谢你在我成为会员之前为我提供解决方案:).

所以我有这个代码:

for %%a in ("%PBpath%") do ( 
move "network location 1 files" "network location 2" >NUL
if ERRORLEVEL 0 (echo Diagram %%~na.pdf was successfuly archived) else ( echo            Diagram %%~na.pdf was not archived )
ECHO.%errorlevel%
          )
Run Code Online (Sandbox Code Playgroud)

问题是我无法得到不同于0的错误级别.即使要从位置丢失要复制的文件,我仍然可以回显成功存档的消息.我在论坛上搜索了类似的问题,但由于某些原因我无法使其工作.copy和ping命令之间是否有不同之处(ping命令在errorlevel中返回正确的退出代码),因为我无法通过复制或移动来获取它...

谢谢!安德鲁

batch-file exit-code errorlevel

7
推荐指数
1
解决办法
8636
查看次数

如何在管道命令行中使用第一个程序的返回码

我正在编写一个简单的程序来解析编译器的输出并重新格式化任何错误消息,以便我们使用的IDE(visual studio)可以解析它们.我们nmake用来构建,它将使用如下命令行调用编译器:

cc166.exe SOME_FLAGS_HERE MyCFile.c 2>&1 | TaskingVXToVisualReformat.exe
Run Code Online (Sandbox Code Playgroud)

现在问题是编译器的返回代码cc166没有被反馈到nmake.只使用我的重新格式化程序的返回码,这意味着如果我从重新格式化程序返回零,则nmake将继续构建而不是中止.如何将编译器(cc166.exe)的返回码反馈给nmake

有没有办法我的重新格式化程序可以读取编译器的返回代码并在决定自己的返回代码时使用它?重新格式化程序是用C#编写的.

pipe errorlevel

6
推荐指数
1
解决办法
530
查看次数

批处理文件调用 Node.js - 如何从 Node 设置 ERRORLEVEL

我有一个调用节点程序的批处理文件:

@echo off

echo Starting Deploy.js: %date% %time%
echo CurrentDir: %CD%

node .deploy/deploy.js
IF %ERRORLEVEL% NEQ 0 goto error

echo Finished Deploy.js: %date% %time%

echo %~n0: Completed %date% %time%

goto end

:error
endlocal
echo An error has occurred during web site deployment.
call :exitSetErrorLevel
call :exitFromFunction 2>nul

:exitSetErrorLevel
exit /b 1

:exitFromFunction
()

:end
endlocal
Run Code Online (Sandbox Code Playgroud)

I'd like to be able to have my node.js program be able to have it hit the error condition on failure of the application.

How …

batch-file errorlevel node.js

6
推荐指数
1
解决办法
1423
查看次数

在批处理中杀死流程并报告成功

我有以下批处理文件,它终止iTunes程序,如果我连接我的iPod,它不会同步它.(我知道你可以在iTunes中设置它.)

@echo off
:kill
cls
taskkill /F /IM itunes.exe >nul
if %errorlevel%==1 {
echo iTunes not found.
} else {
echo iTunes is killed.
}
goto kill
Run Code Online (Sandbox Code Playgroud)

但是,>nul不响应命令; 所以它只给出了默认的命令文本.所以,是的,我想做的事:

如果找不到iTunes,如命令所示,则应显示

iTunes未找到

如果找到并终止,

iTunes被杀了

救命?错误级别不起作用,这似乎是nul不工作的错误.

windows cmd batch-file errorlevel

5
推荐指数
1
解决办法
1万
查看次数

为什么cmd.exe在64位计算机上具有不同的错误级别行为?

如果我创建一个名为temp.bat的批处理脚本(例如),其中包含:

exit /b 1
Run Code Online (Sandbox Code Playgroud)

当我以各种方式运行它时,我的32位XP系统与64位XP系统的行为不同.

在32位:

> temp.bat
> echo %ERRORLEVEL%
1
> cmd /c temp.bat
> echo %ERRORLEVEL%
0
Run Code Online (Sandbox Code Playgroud)

在64位:

> temp.bat
> echo %ERRORLEVEL%
1
> cmd /c temp.bat
> echo %ERRORLEVEL%
1
Run Code Online (Sandbox Code Playgroud)

我搜索了cmd.exe选项,但我无法找到任何控制它如何从批处理脚本传播错误级别信息的选项.在这一点上,我无法找到任何合理的解释.

cmd batch-file errorlevel

5
推荐指数
1
解决办法
3332
查看次数

带有或不带有错误级别的 Windows 批处理退出选项 b

我是在 Windows 上使用批处理的新手,对 errorlevel 的使用有疑问。

我在谷歌上引用了TechNet(Exit)和许多示例。

他们中的大多数人像这样使用 /b 和 %errorlevel%

if errorlevel 1 exit /b %errorlevel%
Run Code Online (Sandbox Code Playgroud)

我想知道两者之间的区别

if errorlevel 1 exit /b
Run Code Online (Sandbox Code Playgroud)

if errorlevel 1 exit /b %errorlevel%
Run Code Online (Sandbox Code Playgroud)

我认为没有区别,因为 %errorlevel% 没有改变。我错了吗?

windows batch-file errorlevel

5
推荐指数
1
解决办法
4553
查看次数

如何验证 Windows BAT 文件中的当前 git 分支

在我的 BAT 文件中运行一些命令之前,我试图弄清楚如何验证用户是否在正确的分支上。

执行此类检查的最佳方法是什么...

IF (on "master" git branch) THEN
   ...
ELSE
   ...
Run Code Online (Sandbox Code Playgroud)

git batch-file errorlevel

5
推荐指数
2
解决办法
3951
查看次数

如何从命令结果中获取 for /f 循环中的错误级别?

我正在批处理文件中运行 SQL 请求,我需要获取错误级别及其给出的输出。我尝试过使用:

for /f "tokens=*" %%i in ('%SQLCommand%') do ( ...
Run Code Online (Sandbox Code Playgroud)

在“do”中,如果错误级别为1,那么我可以执行我计划执行的任何操作,但我似乎无法找到从命令结果中获取错误级别的方法。我也不确定错误级别是否可以在循环中更改,但我计划对其进行测试,以便我可以了解命令是否更改错误级别。

batch-file errorlevel

5
推荐指数
1
解决办法
2285
查看次数

ERRORLEVEL与%ERRORLEVEL%与感叹号ERRORLEVEL感叹号

我认为我对ERRORLEVEL与%ERRORLEVEL%有基本的了解,但是!ERRORLEVEL!使我困惑。

我正在制作一个脚本,该脚本调用可执行文件,然后任务列表以查看其是否正在运行,然后通过taskkill将其杀死,然后尝试输出错误级别并针对其他exe重复此操作,而我意识到我真的不明白批处理中的错误级别。

我将变量设置为!errorlevel!然后在回显中使用不带引号的变量,并且在设置后出现错误时,变量从一个uint16更改为另一个uint16,例如它引用了真实的变量而不是副本。我要复制。有人可以解释这些家伙之间的区别吗?


更新:这是我正在处理的代码段。

for %%P in (%executableList%) do (
   echo ----------------------------------------------------------------------------------       
    set exeErrorlevel=0
    set running=false

    start %%~fP  
    set exeErrorlevel=!ERRORLEVEL!

    rem for debugging purposes
    echo %%~nP%%~xP older errorlevel %ERRORLEVEL%       
    echo %%~nP%%~xP newer errorlevel !ERRORLEVEL!        
    echo before tasklist running var is : !running!

    tasklist /FI "IMAGENAME eq %%~fP" | find /I /N /C  "%%~fP" >nul && set running=true

    echo after tasklist is running var is: !running!

    if !running! equ true ( 
       echo %%~nP%%~xP Program is running
       taskkill /F /IM %%~nP%%~xP /T …
Run Code Online (Sandbox Code Playgroud)

windows cmd batch-file errorlevel

4
推荐指数
1
解决办法
3214
查看次数

标签 统计

errorlevel ×10

batch-file ×9

cmd ×3

windows ×3

choice ×1

command ×1

exit-code ×1

file ×1

git ×1

node.js ×1

pipe ×1