Когда я использую Windows, Run инструмент для вызова мой ехе с аргументом работать нормально я ниже cmd.exe/C «C: \ ех \ abc.exe» SKK Тогда мой ехе получить хит, и я получил skk в качестве аргумента. BUt I i cmd.exe/C "C: \ ex \ abc.exe" "sk k", тогда мой exe не вызывает. Зачем? Но то же самое прекрасно работают в CMD линии «C: \ ех \ abc.exe» «ск к»Run инструмент не работает
0
A
ответ
2
Это дизайн
Если более двух кавычек присутствуют после включения/C , то «поведение заключается в том, чтобы увидеть, является ли первый символ символом кавычки, и если да, разделите лидирующий символ и удалите последний символ кавычки в командной строке, сохраняя любой текст после последнего символа кавычки». Если только следующие условия не являются встретились:
- нет/S не переключитесь
- е xactly два символа кавычек
- никаких специальных символов между двумя символами кавычек, где special является одним из: & <>() @^|
- есть один или несколько пробельных символов между двумя символами кавычек
- строка между двумя символами кавычек - это имя исполняемого файла.
Так что, когда вы делаете
cmd.exe /C "C:\ex\abc.exe" "sk k"
он пытается выполнить
C:\ex\abc.exe" "sk k
, который, очевидно, не работает. Если вы хотите запустить ехе с аргументом, содержащим пробелы, попробуйте
cmd.exe /C C:\ex\abc.exe "sk k"
Или обернуть всю команду в двойных кавычках, так как:
cmd.exe /C ""C:\New Folder\abc.exe" "sk k""
Да, это работает. но что произойдет, если мой abc.exe находится в «Новой папке»? Мне нужно сделать это cmd.exe/C "C: \ New Folder \ abc.exe" "sk k". Это не работает. Теперь мне нужно сделать. – San
Затем заверните всю команду в двойные кавычки (см. Исправленный ответ выше) –