我有一个批处理程序,其中包含一个子部分,该部分迭代文件行以尝试运行 EXE,然后批处理程序根据其退出代码对 EXE 进行排序。
由于某种原因,ANSI SGR 似乎会在设置上一个的图形修饰后破坏或回显文字字面意思,而不是重新呈现它。
我回来参考了这个 question 和原始文档,但我不确定为什么我的批处理程序的特定区域在第一行回显后会搞乱控制台内的 ANSI 颜色。
我用 Notepad 替换了我的工具,您可以手动关闭它以获得零退出,或使用控制面板结束进程以获得非零退出。
由于您实际上只是使用记事本并发送一些参数,因此 test_map.log
的内容不太重要。这是我的设置:
C:\temp\qt_selftest.exe
C:\temp\sub_test.exe
C:\temp\cmd_module_test.exe
C:\temp\failing_qt_test.exe
C:\temp\passing_qt_test.exe
C:\temp\random_qt_test.exe
C:\temp\fail_module.exe
C:\temp\pass_module.exe
正如您从屏幕截图中所看到的,这些行被文字逐字处理。在我提取此代码块时,它可以正常运行... 但仅限于该代码块中。
你有任何想法是我可能犯了什么错吗?
由于ESC序列被转换,我无法直接分享代码,所以这里是要点: https://gist.github.com/the-nose-knows/1bebce2719e020188c6307cff736f951
如果您需要在[
之前重新添加它们,请使用027的alt-code,如alt 0 2 7
bool process_created = CreateProcess(obj.process_name.c_str(), parameters, NULL, NULL, FALSE, DETACHED_PROCESS, NULL, NULL, p_startup_info, p_proc_info);
,而我最近没有对该工具进行过多次更新,但可能会触发批处理文件中更改其行为的某些操作。也许现在总是至少填写要创建的进程的 cmd-params 使其被视为“外部”因素。 - kayleeFrye_onDeckfor
循环语句中,一旦它恢复了启动控制台模式以执行notepad.exe,它就不会在循环退出之前重置自己的模式设置。显然,它仅依赖于顶层批处理脚本评估循环,在语句之间重置控制台模式。 - Eryk Sun