2014-11-16 3 views
0

Когда я использую 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 инструмент не работает

ответ

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"" 
+0

Да, это работает. но что произойдет, если мой abc.exe находится в «Новой папке»? Мне нужно сделать это cmd.exe/C "C: \ New Folder \ abc.exe" "sk k". Это не работает. Теперь мне нужно сделать. – San

+0

Затем заверните всю команду в двойные кавычки (см. Исправленный ответ выше) –