如何在Cadence Allegro Skill的ipcBeginProcess中传递含空格参数
在Cadence Allegro Skill中传递含空格的参数问题
问题场景
在CMD中直接调用带空格路径和参数的可执行文件时,参数能被正确识别:
C:\Users\Administrator>"Desktop\for test\test.exe" "1 1" "2 2" ['Desktop\\for test\\test.exe', '1 1', '2 2'] Hello World
但使用Cadence Allegro Skill的ipcBeginProcess时,将命令和参数拼接成单个字符串传递会导致含空格的参数被错误拆分:
command = "\"C:\\Users\\Administrator\\Desktop\\for test\\test.exe\" \"1 1\"" "\"C:\\Users\\Administrator\\Desktop\\for test\\test.exe\" \"1 1\"" ipc = ipcBeginProcess(command) ipc:41 line = ipcReadProcess( ipc) "['C:\\\\Users\\\\Administrator\\\\Desktop\\\\for test\\\\test.exe', '1', '1']\r\nHello World\r\n"
预期的"1 1"被拆分为"1"和"1",无法达到预期效果。
解决方法
不要将命令与参数拼接为单个字符串,而是采用多参数形式调用ipcBeginProcess,将可执行文件路径和每个参数分别作为独立参数传入:
; 直接拆分路径和参数,无需手动加引号 ipc = ipcBeginProcess("C:\\Users\\Administrator\\Desktop\\for test\\test.exe" "1 1" "2 2") line = ipcReadProcess(ipc)
这种方式下,ipcBeginProcess会自动处理路径和参数中的空格,确保含空格的参数被完整识别,不会被错误拆分。
内容的提问来源于stack exchange,提问作者Albert.Huang




