5

我正在从 Windows 上的命令行运行节点脚本,并尝试传入包含空格的文件夹路径。当通过 require 模块或process.argv变量访问这个参数时,我似乎没有得到我所期望的。对于以下命令:

node script.js "C:\path\to\folder\with a space\"

我似乎得到以下值:

process.argv[2] = C:\path\to\folder\带空格\"

注意字符串中的尾随"。如果参数不带引号传递,它显然将其作为在空间上拆分的不同参数传递。

我做错了什么,还是这是一个错误?如果它是一个错误,是否有可能的解决方法?

4

1 回答 1

4

尾随反斜杠转义引号,然后再次由 shell 暗示(而不是由于缺少右引号而中止)。

修复只是用另一个反斜杠转义该反斜杠或完全省略它:

C:\Users\myself> python -c "import sys; print sys.argv[1]" "foo\bar\"
foo\bar"
C:\Users\myself> python -c "import sys; print sys.argv[1]" "foo\bar\\"
foo\bar\

请注意,您只能以这种方式转义最后一个反斜杠 - 字符串中的任何其他反斜杠都不会充当转义字符:

C:\Users\myself> python -c "import sys; print sys.argv[1]" "foo\\bar\\"
foo\\bar\
于 2012-09-05T23:20:00.700 回答