对于从批处理文件运行的powershell脚本,空格键的参数解析不正确


0

我有一个运行powershell脚本的批处理文件,我需要将两个参数传递给脚本。在我的批处理中它看起来像这样:

powershell -executionpolicy remotesigned -File "my script.ps1" "my path1\" "my path2\somefile.txt"

现在的方式,我的powershell脚本的参数完全搞砸了,我得到:

  • 我的路径1“我的
  • 路径2 \ somefile.txt

我尝试使用'`字符封装我的参数,我几乎得到了我想要的东西,但第二个引号字符仍然在powershell脚本中。我得到的是这个:

powershell -executionpolicy remotesigned -File "my script.ps1" "'my path1\'" "'my path2\somefile.txt'"
  • '我的路径1'
  • 'my path2 \ somefile.txt'

而我想要的是这个

  • 我的路径1
  • 我的path2 \ somefile.txt

我知道我可以删除powershell脚本中的冗余引号,但是有更好的方法吗?换句话说,我如何以一种让他们保持理智的方式将这些参数传递给powershell?

测试powershell脚本:

echo $args[0]
echo $args[1]

我只是注意到第一个参数以\字符结尾,它似乎作为转义字符。现在我需要弄清楚如何解决它。
jahu 2015年

Answers:


0

我设法搞清楚了。问题是第一个参数中的尾部斜杠。这个斜线正在逃避我的引用,因为它并没有作为引用(但是出于某种原因,powershell仍然在以后的某个空间切断了字符串)。

我的批处理文件是自动生成的,但我设法通过在第一个参数的末尾添加另一个斜杠来修复它(预计以斜杠结束)。

powershell -executionpolicy remotesigned -File "my script.ps1" "my path1\\" "my path2\somefile.txt"

此问题可能不是特定于批处理文件的,并且很可能也会影响从命令行运行的PowerShell脚本。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.