我有一个 powershell 脚本,它正在调用一个批处理脚本(在里面运行 perl),当从我的 powershell 脚本调用时,它没有正确解析参数。情况如下。
手动调用我的批处理/perl 脚本时
test.cmd -tasks "Task A","Task B","Task C"
一切正常,参数“Task A”、“Task B”、“Task C”被视为一个单元,可以传递给另一个可执行文件。
但是当使用调用表达式调用时
$fullCommand = "cmd.exe /C C:\test\test.cmd -tasks `"Task A`",`"Task B`",`"Task C`";
Invoke-Expression -Command $fullCommand;
批处理脚本认为每个字符串都是一个单独的参数。换句话说,“任务 A”是 -tasks 之后的第一个参数,然后是“任务 B”,然后是“任务 C”,脚本无法识别如何处理。
我可以通过单独传递每个任务名称来解决这个问题(例如 -Task “Task A” -Task “Task B” -Task “Task C”),但这需要我有额外的逻辑来解析这些,将它们放入一个数组,然后将它们改造成一个字符串并传回另一个可执行文件。