问题标签 [errorlevel]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
windows - 包含所有错误级别的 Windows 批处理文件
我有一个批处理文件,它只加载了复制和 xcopy 命令,如果其中任何一个失败,我需要跳出复制到 goto 标签,但是每次复制后都必须检查错误级别会非常不方便。
我怀疑这可能是不可能的,但是有没有一种方法可以让我进行大量的复制/xcopys 并在最后检查错误级别是否曾经超过零?
cmd - 从 Windows XP 中的子进程退出代码“丢失”,而不是在 Windows Server 2003 中
编辑 3
好的,所以这似乎毕竟不是安装程序问题。当我制作一个简单的批处理文件时:
并将其称为
我在 Windows Server 2003 R2 上得到“12”,但在 XP 上得到“0”。我以为我之前已经多次测试过这个简单的测试用例,但显然没有。
所以,我已经更改了标签和标题,但我将其他信息留在这里,因为这里实际上有很多有用的东西与这个问题没有直接关系。
想法?
原文如下
我有一个用 VBScript 编写的自定义操作,它反过来调用 Windows 批处理文件(自定义操作本质上是允许用户在安装时执行某些操作,他们也可以稍后通过运行批处理文件来运行 - 这是一种方便)。功能如下:
当我在自定义操作之外运行相同类型的代码并且批处理文件返回错误代码(通过 EXIT /B)时,返回值在 intReturnCode 中正确捕获。但是,从自定义操作来看,退出代码似乎“丢失”了——我总是得到一个 0(我可以在 WriteMessage 调用的安装程序日志中看到这一点)。无论我在 shell 上使用 Exec 还是 Run 都没有关系,我仍然会返回一个 0。脚本在返回之前会写出自己的返回代码(我可以在 Exec 的 stdout 流中看到这一点)所以我知道它不是实际上是 0。我需要该返回码才能将错误正确报告给安装程序。
想法?
作为记录,这是 Windows XP SP3 上的 Windows Installer 3.0。安装程序在 Wise 中,所以我没有 WiX 片段,或者我会包含它,但这是被调用的函数。
这也有点被剥夺了——我省略了对 WriteMessage 的评论和其他调用以及该函数。是的,伪匈牙利语是邪恶的等等等等。
编辑:这是代码的 C 版本。它给出了同样的问题:
在我的 Windows Server 2003 R2 Visual Studio 2008 机器上运行时,我得到了预期的错误代码:
在我的 Windows XP 测试盒上运行时,我得到一个 0,即使它应该是一个错误:
两台机器都有 Windows Installer 3.1。XP 是 3.01.4001.5512,2003 R2 是 3.01.4000.3959。
因此,尽管我不知道是什么,但盒子之间的表现有所不同。
编辑 2
由 Wise for Windows Installer 工具生成的操作的确切表行是:
"RunMigrationActionCA","1537","Calllaunchchildprocess","RunMigrationAction","0"
为了测试立即标志,我在类型列中添加了 0x800,并且在最终行为中没有看到任何变化。
需要明确的是 - 这在 2003 R2 机器上运行良好。那台机器没有加入域,但 XP 机器是。组策略中是否有任何可能导致此行为的内容?(此时抓住稻草。)
windows - 如何通过 %errorlevel% 获取退出代码,它不再适用于汇编程序
我想获得我的教程汇编程序的退出代码(使用 masm32 和链接)。它工作正常,我会输入 echo %errorlevel%
,它会显示我在之后输入的退出代码invoke ExitProcess
。现在它不再起作用了。我在 OpenSuse 12.1 主机和 Windows Vista Home Premium 上使用 VirtualBox 作为来宾。我一直在寻找答案,但没有找到答案。大多数抱怨都是关于使用批处理文件,这不是我想要做的。这是简单的程序
hello_world.asm
我希望它返回 2,但echo %errorlevel%
返回 0。我缺少什么吗?谢谢,我很抱歉这个问题已经回答死了。我只是找不到我的答案。
编辑:实际上,我找到了部分答案。只有当我使用链接时它才有效/SUBSYSTEM:CONSOLE
。使用/SUBSYSTEM:WINDOWS
总是返回 0。我不知道该怎么做。windows程序的退出代码在哪里?任何信息都非常感谢。
batch-file - 有时批量检测不到 FTP 服务器响应
我在 Win2003 中运行一个批处理文件来通过 FTP 传输文件。
批处理文件将 FTP 会话结果通过管道传输到 FIND 以查看是否有 226 成功消息,这很好用。不幸的是,从调度程序我遇到了错误级别的条件,即使文件传输成功并且返回了 226 消息。
用户帐户是管理员帐户,因此不是权限问题。有任何想法吗?
更新:
226 消息未通过重定向捕获,因此 FIND 失败。在我的测试中,当从调度程序运行时,我将 FTP 输出重定向到一个单独的文件。尽管 FTP 命令运行成功,但没有出现任何服务器响应。
这是我的 FTP 脚本:
这是输出(FTP -s:go.ftp >ftp.log 2>ftp.err
)。
此外,错误流 ( 2>ftp.err ) 中不会出现任何内容。至少我现在知道为什么我的 FIND 的错误级别没有被触发,但为什么 FTP 服务器响应没有被捕获?我没有使用 -v 开关或切换详细。
windows - 从 Windows 远程运行 Linux 脚本并获取执行结果代码
我要处理当前的情况:我必须使用 ARCServe R15(安装在 Windows 2003R2SP2 上)安排我公司基于 Linux 的服务器(在 Suse Linux 下)的备份。我知道我的备份软件 (ARCServe) 能够将执行前/后执行脚本添加到我的备份作业中。如果脚本失败,将指定 ARCServe 不运行备份作业,如果成功,则指定运行。我对此没有任何问题。
问题是,我想制作一个 Windows 脚本(由 ARCServe 启动)以在集群上执行 Linux 脚本: - 如果这个 Linux 脚本失败,我希望我的 windows 脚本失败,所以我在 ARCServe 中的备份作业不会运行 - 如果 Linux 脚本成功,我希望我的 windows 脚本以错误代码 0 正常结束,因此我的 ARCServe 作业将正常运行。我试过创建这个批处理文件(我们称之为 HPC.bat):
回声开启
开始 /wait "C:\Program Files\PUTTY\plink.exe" -v -l root -i "C:\IST\admin\scripts\HPC\pri.ppk" [cluster_name] /appli/admin/backup_admin
退出%errorlevel%
如果我通过双击这个 .bat 手动启动它,或者在 Windows 下的命令提示符下启动它,它会正常执行然后结束。如果我让它由 ARCServe 启动,脚本似乎永远不会结束。我的工作处于“等待”状态,似乎linux脚本的执行代码没有返回到我的批处理文件中,并且这个没有关闭。在我看来,发生的事情是 plink 只是打开与 Linux 的连接,发送 sript 执行信号,然后关闭连接,因此无法将执行代码返回给批处理。我对吗 ?
我想做的事情是可能的,还是我在尝试不可能做的事情?那么,我必须以不同的方式进行吗?我必须使用 PUTTY 或 CygWin 而不是 plink 吗?拜托,这让我头疼...
autohotkey - 自动热键 - 图像搜索
我正在尝试通过将当前屏幕与所需屏幕的图像进行比较并查看它们是否匹配来测试 GUI。我为此使用 AutoHotKey 的 ImageSearch。
我不断得到一个ErrorLevel = 1。关于如何解决此问题的任何建议。
谢谢
cmd - 运行 sqlcmd 后的命令提示错误级别问题
我的代码如下:
我面临的问题是errorlevel
,因为在我运行数据库脚本后它总是返回 0。这是因为指令CALL:ECHORESULT "result [OK=0,ERR=any other]: %errorlevel%" %errorlevel%
. 如果脚本运行时出错,它永远不会转到FINAL_ERROR
. 当我遇到脚本错误时,我不知道如何进行验证以停止该过程。
cmd - CMD 返回 ErrorLevel 不运行程序
我正在通过 CMD 提示符运行 Powershell 命令,我想在开始运行命令之前检查是否先安装了 Powershell。如果 powershell 不存在而不显示下面的实际错误,我希望脚本退出。这是我的脚本:
我遇到的问题是我将其作为输出:
windows - 重定向命令行输出以防止错误消息显示在命令窗口中
我正在测试一个文件夹的存在,并且根据它的存在,我想运行不同的命令:
问题是,如果该文件夹不存在,除了标准输出之外,我还会收到此错误:
我想显示正确的输出而不会出现错误。
perl - 执行 Perl 脚本并在 Windows 批处理脚本中捕获其退出值的语法是什么?
我在批处理中调用的 Perl 脚本返回一个1
、2
或3
。使用参数 829 调用这个 perl 脚本并捕获脚本的退出代码的语法是什么?