在 Windows 上将一个带有空格的参数传递给 node.js 脚本

Lov*_*ing 5 arguments node.js

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

node script.js "C:\path\to\folder\with a space\"
Run Code Online (Sandbox Code Playgroud)

我似乎得到以下值:

process.argv[2] = C:\path\to\folder\with a space\"

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

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

Thi*_*ter 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\
Run Code Online (Sandbox Code Playgroud)

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

C:\Users\myself> python -c "import sys; print sys.argv[1]" "foo\\bar\\"
foo\\bar\
Run Code Online (Sandbox Code Playgroud)