Нет веских причин для этого. Фактически, единственный реальный эффект, который случается, состоит в том, чтобы замедлить вещи.
Люди могут подумать, что для этого есть веская причина. Использование CMD имеет следующие эффекты, которые обычно могут быть хорошими в некоторых случаях:
- Включает внутренние команды, такие как "
DIR
"
- Устанавливает переменные среды, такие как переменная PATH
Однако в этом случае ни одно из этих преимуществ не будет получено. Давайте посмотрим на оба этих сценария:
Таким образом, в некоторых случаях может быть CMD /C
полезно использовать « ». Например, если я использую внешнюю команду PSEXEC
(загруженную из SysInternals) и пытаюсь запустить « DIR
» на удаленном компьютере, то Windows попытается выполнить команду « DIR
». Windows не сможет выполнить эту команду, так как нет файла " DIR.EXE
", " DIR.BAT
" или " DIR
", заканчивающегося другим поддерживаемым расширением. (Поддерживаемые расширения можно увидеть, запустив " ECHO %PATHEXT%
".)
Однако в этом сценарии, если я попытаюсь запустить " CMD /C DIR
", то это сработает, потому что Windows будет искать исполняемый файл с именем " CMD
" и найдет его, а затем в CMD
конечном итоге успешно DIR
выполнит команду " ", которая является внутренней часть команды " CMD
".
В этом случае вы можете просто запускать powershell
так же легко, как « CMD /C powershell
», так что вы не получите никакой выгоды от ненужного « CMD /C
». Единственное преимущество, которое я вижу при прохождении дополнительного этапа ввода " CMD /C
", - это предоставить пример, который будет полезен, если кто-то решит попробовать изменить пример для запуска командной строки " DIR
" или " COPY
". Наличие более гибкого примера может быть полезно для некоторых людей. Это действительно не нужно, когда люди знают, что они делают.
Что касается второго пункта, который я указал, который заключается в установке переменных среды, то это также то, что вы не делаете активно в данном конкретном случае. Может быть, некоторые люди думают, что они помогают, вызывая переменную среды PATH. Однако, когда вы запускаете команды напрямую (например, из пункта меню «Выполнить» в меню «Пуск»), операционная система Windows может искать команды в некоторых дополнительных местах. Например, в Windows XP / новее вы можете запустить:
reg query "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths"
Если команда, которую вы хотите выполнить, указана в разделе «Пути к приложениям», Windows может найти программу, даже если ее нет в пути. Таким образом, Windows, вероятно, найдет даже БОЛЬШЕ, чем то, что CMD найдет в ПУТИ, который использует CMD.
Одно из возможных преимуществ заключается в том, что если вы хотите, чтобы CMD запускался так, чтобы вы могли ссылаться на переменную среды, такую как% USERPROFILE% или% LOGONSERVER% или% TEMP% /% TMP%, но поскольку вы этого не делаете, вы не нужно бежать " CMD /C
".
Итак, для вашего конкретного случая: нет веских причин для этого. Эффекты, которые вы достигаете, - это то, что ваш компьютер выполняет больше работы, замедляет процесс и использует больше памяти (и все это вы делаете на незначительном количестве на современном оборудовании).
cmd /c
...cmd /k
не отличается тем, что оставляет окно открытым после завершения команды. Предположительно, аскер сделал это таким образом, чтобы они могли видеть выходные данные в целях отладки.