5

Windowsのコマンドラインからノードスクリプトを実行していて、スペースを含むフォルダーパスを渡そうとしています。この引数にアクセスするとき、requireモジュールまたは変数を介して、process.argv期待したものが得られないようです。次のコマンドの場合:

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

私は次の値を取得しているようです:

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

"文字列の末尾に注意してください。引数が引用符なしで渡された場合、スペースで分割された別の引数として明らかに渡されます。

私は何か間違ったことをしていますか、それともこれはバグですか?そして、それがバグである場合、可能な回避策はありますか?

4

1 に答える 1

4

末尾のバックスラッシュは引用符をエスケープします。引用符は、(終了引用符がないために中止するのではなく)シェルによって再び暗示されます。

修正は、単にそのバックスラッシュを別のバックスラッシュでエスケープするか、完全に省略することです。

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 に答える