web-dev-qa-db-ja.com

パスにスペースがあり、引数にスペースがあるバッチファイルの実行に関する問題

次の場所にあるバッチファイルを実行しようとしています。

C:\Test Batch\BatchTest.bat

それは別の指定された場所からファイルをコピーします。

C:\Users\UserName\Desktop\Company Downloads\downloadedDoc.doc

バッチファイルを次のように実行できます。

cmd  /c start "" "C:\Test Batch\TestBatch.bat"

そして、バッチは実際に実行されます。

しかし、次のようにコピーするための引数を追加しようとすると:

cmd  /c start "" "C:\Test Batch\TestBatch.bat" "C:\Users\User Name\Desktop\Company Downloads\downloadedDoc.doc"

私は得る:

'C:\Test' is not recognized a an internal or external command, operable program or batch file.

最終的に、コピーするバッチファイルとファイルはユーザーが指定し、名前またはパスにスペースが含まれる可能性があります。したがって、スペースなしのパスを使用するという単純な答えでは不十分です。

16
tfontana

/ d引数で起動ディレクトリを変更して、次のように起動してみてください。

cmd /c start "" /d"C:\Test Batch\" "TestBatch.bat" "C:\Users\User Name\Desktop\Company Downloads\downloadedDoc.doc"

Startコマンドには、引用符を解析する奇妙な点がいくつかあります。

14
Egg

既知の機能 of cmd.exeによって開始されますstart.exe。これは、コマンドの名前またはパスにスペースが含まれていて、少なくとも1つの引数が引用されている場合にのみ発生します。

回避策は、コマンドをcallに置き換えることです。

start "" CALL "C:\Test Batch\TestBatch.bat" "C:\Users\User Name\down.doc"
8
jeb