Неисправность запуска командного файла с пространством в пути и пробеле в аргументе
Я пытаюсь запустить пакетный файл, который находится в:
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.
В конечном счете командный файл и файл, который нужно скопировать, будут указаны пользователем и, вероятно, будут содержать пробелы в именах или путях. Поэтому простого ответа на использование путей без пробелов будет недостаточно.
Ответы
Ответ 1
Попробуйте изменить каталог запуска с аргументом /d, чтобы начать так:
cmd /c start "" /d"C:\Test Batch\" "TestBatch.bat" "C:\Users\User Name\Desktop\Company Downloads\downloadedDoc.doc"
Команда запуска содержит некоторые синтаксические разборки кавычек.
Ответ 2
Это известная функция cmd.exe
, которая запускается start.exe
. Это происходит только тогда, когда команда имеет пробел в своем имени или пути и хотя бы один из аргументов цитируется.
Обходным решением является замена команды на call
.
start "" CALL "C:\Test Batch\TestBatch.bat" "C:\Users\User Name\down.doc"