Nie ma dobrego powodu, aby to zrobić. W rzeczywistości jedynym prawdziwym efektem jest spowolnienie.
Ludzie mogą myśleć, że istnieje dobry powód, aby to zrobić. Korzystanie z CMD ma następujące efekty, które zwykle mogą być dobre w niektórych przypadkach:
- Włącza wewnętrzne polecenia, takie jak „
DIR
”
- Ustawia zmienne środowiskowe, takie jak zmienna PATH
Jednak w tym przypadku nie uzyskuje się żadnej z tych korzyści. Spójrzmy na oba te scenariusze:
Dlatego w niektórych przypadkach może być czas, kiedy użycie „ CMD /C
” jest przydatne. Na przykład, jeśli PSEXEC
użyję zewnętrznego polecenia (pobranego z SysInternals) i spróbuję uruchomić „ DIR
” na komputerze zdalnym, wtedy Windows spróbuje uruchomić polecenie „ DIR
”. System Windows nie uruchomi tego polecenia, ponieważ nie ma pliku „ DIR.EXE
”, „ DIR.BAT
” lub „ DIR
” kończącego się innym obsługiwanym rozszerzeniem. (Obsługiwane rozszerzenia można zobaczyć, uruchamiając „ ECHO %PATHEXT%
”.)
Jednak w tym scenariuszu, jeśli spróbuję uruchomić „ CMD /C DIR
”, to zadziała, ponieważ system Windows wyszuka plik wykonywalny o nazwie „ CMD
” i znajdzie go, a następnie CMD
pomyślnie uruchomi polecenie „ DIR
”, które jest wewnętrznym część CMD
polecenia „ ”.
W takim przypadku możesz uruchomić powershell
tak łatwo, jak „ CMD /C powershell
”, więc nie zyskujesz na niepotrzebnym „ CMD /C
”. Jedyną korzyścią, jaką widzę, przechodząc przez dodatkowy etap pisania „ CMD /C
”, jest podanie przykładu, który będzie przydatny, jeśli ktoś zdecyduje się zmodyfikować przykład, aby uruchomić wiersz polecenia „ DIR
” lub „ COPY
”. Bardziej elastyczny przykład może być przydatny dla niektórych osób. To naprawdę nie jest potrzebne, gdy ludzie wiedzą, co robią.
Jeśli chodzi o drugi punkt, który podałem, który polega na ustawianiu zmiennych środowiskowych, jest to również coś, czego nie aktywnie robisz w tym konkretnym przypadku. Być może niektórzy ludzie myślą, że pomagają, powodując ustawienie zmiennej środowiskowej PATH. Jednak po uruchomieniu poleceń bezpośrednio (np. Z opcji menu „Uruchom” w menu Start) system operacyjny Windows może szukać poleceń w niektórych dodatkowych miejscach. Na przykład w systemie Windows XP / nowszym możesz uruchomić:
reg query "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths"
Jeśli polecenie, które chcesz uruchomić, znajduje się na liście „Ścieżki aplikacji”, system Windows może znaleźć program, nawet jeśli nie znajduje się on na ścieżce. Tak więc Windows prawdopodobnie znajdzie WIĘCEJ niż tylko to, co CMD znajdzie w ŚCIEŻCE, której używa CMD.
Jedną z możliwych korzyści jest to, że chcesz uruchomić CMD, abyś mógł odwoływać się do zmiennej środowiskowej, takiej jak% USERPROFILE% lub% LOGONSERVER% lub% TEMP% /% TMP%, ale ponieważ tego nie robisz, nie jesteś trzeba uruchomić „ CMD /C
”.
Tak więc w twoim konkretnym przypadku: nie ma dobrego powodu, aby to zrobić. Osiągane efekty to większa wydajność pracy komputera, spowolnienie procesu i zużycie pamięci (wszystko to w niewielkim stopniu na nowoczesnym sprzęcie).
cmd /c
...cmd /k
nie różni się tym, że pozostawia otwarte okno po zakończeniu polecenia. Prawdopodobnie pytający zrobił to w ten sposób, aby mogli zobaczyć dane wyjściowe do celów debugowania.