无法在参数中的路径和空间中运行批处理文件

时间:2013-09-18 16:10:28

标签: batch-file cmd arguments

我正在尝试运行位于以下位置的批处理文件:

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.

最终,要复制的批处理文件和文件将由用户指定,并且名称或路径中可能包含空格。因此,使用没有空格的路径的简单答案是不够的。

2 个答案:

答案 0 :(得分:14)

尝试使用/ d参数更改启动目录,如下所示:

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

start命令有一些奇怪的解析引号。

答案 1 :(得分:8)

这是cmd.exe的已知功能,由start.exe启动。仅当命令在其名称或路径中有空格且至少引用其中一个参数时才会发生这种情况。

解决方法是将命令替换为call

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