在Windows上传递node.js脚本的参数

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

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

我似乎得到以下价值:

process.argv [2] = C:\path\到\文件夹\与空格\“

请注意string中的尾部"如果参数不带引号传入,显然会传递它作为不同的参数在空间上分割。

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

尾随的反斜杠转义了由shell再次暗示的报价(而不是由于缺less结束报价而中止)。

解决方法是简单地用另一个反斜杠转义反斜杠或完全忽略它:

 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\ 

请注意,您可能只能通过这种方式逃避最后一个反斜杠 – string中的任何其他反斜杠将不会充当转义字符:

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