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