cmd - 使用带有系统限制的 cmd 错误代码
问题描述
系统限制说明:
我使用的是plc-functionblock NT_StartProcess来使用cmd.exe,但是由于使用functionblock有一些限制因素:需要调用一个可执行文件(可以调用其他的,如cmd.exe),命令的最大字符串大小为255并且命令需要在一行中/不能分成2个命令。如果调用了 cmd.exe 或 powershell.exe,则需要在执行后关闭它们(例如在 cmd 中使用 /C)。
我正在调用一个可执行文件,并将返回的错误代码存储在 .txt 文档中。我想复制以下 2 个命令的行为:
C:\RootFolder> Testexecutable.exe --Testparameters
...Testexecutable.exe is doing sth
C:\RootFolder> echo %ERRORLEVEL% > Testfile.txt
这始终具有正确和预期的行为。现在,由于系统限制,这两个命令必须结合起来。我给功能块的可执行路径可以是cmd或powershell,但不能是Testexecutable.exe,因为可以给Testexecutable.exe的唯一参数会改变行为,但不能处理输出,因此我无法访问错误代码。
我无法使用类似的东西
cmd.exe /C "Testexecutable.exe --Testparameters & echo %ERRORLEVEL% > Testfile.txt"
因为在 cmd.exe 被调用之前 %ERRORLEVEL% 的先前值被保存。
例如:
C:RootFolder> cd
C:RootFolder>
C:RootFolder> echo %ERRORLEVEL%
0
C:RootFolder> cmd.exe /C "Testexecutable.exe --Testparameters & echo %ERRORLEVEL% > Testfile.txt"
在本例中,0 保存在 Testfile.txt 中。其他示例:
C:RootFolder> cd t
Can't find path...
C:RootFolder> echo %ERRORLEVEL%
1
C:RootFolder> cmd.exe /C "Testexecutable.exe --Testparameters & echo %ERRORLEVEL% > Testfile.txt"
在本例中,1 保存在 Testfile.exe 中。
-> %ERRORLEVEL% 在调用 Testexecutable.exe 之前被其整数值替换。示例中的假定输出始终为 5。
有没有办法将 %ERRORLEVEL% 的替换“延迟”到执行前一个命令之后?还有另一种方法来获取可执行文件的错误代码吗?
解决方案
推荐阅读
- javascript - 使用 Leaflet 或任何带有 Typescript 和 webpack 的 js 库
- angular - Angular 9将循环结构转换为JSON错误
- xml - 使用 bash 脚本从 xml 文件中获取特定值
- java - 有没有办法将参数传递给石英 cron 作业?
- postgresql - PostgreSQL 全文搜索 - 优先考虑与所有术语匹配的结果
- java - 如何配置surefire插件,使其可以运行非公共测试类?
- tensorflow - 使用张量流实现 SARSA
- windows - 批处理以从文本文件中删除带有开始和停止分隔符的行范围
- javascript - 无法使用加密解密 encryptedValue
- python - 一维 numpy.sum 返回 1