InstallScript无法读取命令提示符输出文件及命令执行异常问题
解决InstallScript中LaunchAppAndWait无法处理命令重定向的问题
我之前也踩过InstallScript里用控制台命令重定向的坑!你遇到的问题根源在于LaunchAppAndWait传递命令行参数的方式——它没办法直接让cmd.exe正确解析>重定向符号,因为参数的格式没处理对。
问题分析
当你把/c wslconfig /l > D:\\output.txt作为参数传给cmd.exe时,InstallScript会把整个字符串当作一个连续的参数传递,导致cmd.exe无法识别其中的重定向语法,自然就执行失败了。要让cmd.exe正确解析重定向,你需要把/c后面的完整命令用双引号括起来,并且在InstallScript字符串里正确转义双引号。
修复后的代码
STRING szCmdPath, szCmdLine ; szCmdPath = "C:\\WINDOWS\\system32\\cmd.exe"; // 用双引号包裹/c后的命令,内部双引号用\"转义 szCmdLine = "/c \"wslconfig /l > D:\\output.txt\""; LaunchAppAndWait(szCmdPath, szCmdLine, WAIT);
关键说明
- InstallScript中字符串里的双引号需要用
\"来转义,否则会被当成字符串的结束标记,导致参数被截断。 - 把
wslconfig /l > D:\\output.txt整个用引号括起来后,cmd.exe会把它当作一个完整的命令来解析,就能正确识别重定向符号了。
你可以先测试一个简单的命令(比如/c \"echo test content > D:\\test.txt\")验证这个方法是否有效,确认没问题后再替换成你的wslconfig命令。
内容的提问来源于stack exchange,提问作者longt61
相关产品推荐
相关产品推荐

