왜“Powershell”대신“Cmd / c Powershell”을 사용합니까?


25

이 질문에 제공된 지침에 따라 레지스트리를 사용하여 첫 번째 컨텍스트 메뉴를 추가했습니다 (예).

원래는 이것을 실행하는 명령, 즉 "command"키의 값으로 사용했습니다.

Cmd /C Powershell  "imageSeqView --% \"%1\""

ImageSeqViewPowershell 기능의 이름입니다. Powershell 프로필로 가져옵니다. 잘 작동하지만 궁금합니다. 왜 함수를 실행 하기 cmd위해 열어야 Powershell합니까? 그냥하는 것이 더 간단하지 않습니까?

Powershell  "imageSeqView --% \"%1\""

그 명령은 잘 작동하는 것 같지만 사용하는 것이 정식으로 보이기 때문에 cmd강아지 또는 무언가를 비밀리에 죽이는 것이 궁금합니다.

여기에 이미지 설명을 입력하십시오


2
링크 된 질문 사용중인 답변 없음 cmd /c... cmd /k점에서 다소 차이가 없다 는 윈도우 개방 잎 명령이 완료 후입니다. 아마도 asker는 디버깅을 위해 출력을 볼 수 있도록 그렇게했습니다.
Bob

1
내가 궁금해하는 수정자는 그리 많지 않습니다 .ti cmd는 전혀 사용되지 않습니다 . 제 연구에서 보편화 된 것 같습니다.
stib

실제로 cmd /c powershell구체적으로 권장되는 참조를 제공 할 수 있습니까 ? 다시 말하지만, 당신이 연결 한 것은 그런 추천을하지 않습니다.
Bob


3
짐작할 수 있겠지만 아마도 대부분화물 사육 일 것입니다. 이것이 필요할 수있는 몇 가지 경우가 있습니다 (즉, 파이핑과 같은 cmd 구문을 사용하려는 경우).하지만 어쨌든 powershell에서 동일한 작업을 수행 할 수있는 경우 실제로 적용되지 않습니다. MSDN 문서에는 파일 연결과 관련된 문서가 다소 드물지만 이것이 필요하다고 제안하는 것은 없습니다.
Bob

답변:


29

그렇게 할 이유가 없습니다. 실제로 발생하는 유일한 실제 효과는 작업 속도를 늦추는 것입니다.

사람들은 이것을해야 할 충분한 이유가 있다고 생각할 수도 있습니다. CMD를 사용하면 다음과 같은 효과가 있으며 경우에 따라 일반적으로 좋습니다.

  • " DIR" 와 같은 내부 명령을 사용합니다.
  • PATH 변수와 같은 환경 변수를 설정합니다

그러나이 경우 이러한 이점 중 어느 것도 얻지 못합니다. 이 두 가지 시나리오를 모두 살펴 보자.

따라서 " CMD /C"를 사용하는 것이 유용한 경우가 있습니다. 예를 들어 PSEXECSysInternals에서 다운로드 한 외부 명령을 사용하고 DIR원격 컴퓨터에서 " DIR" 를 실행하려고하면 Windows가 " "명령 을 실행하려고합니다 . 지원되는 다른 확장자로 끝나는 " DIR.EXE", " DIR.BAT"또는 " DIR"파일 이 없으므로 Windows에서 해당 명령을 실행하지 못합니다 . " 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"

실행하려는 명령이 "App Paths (앱 경로)"에 나열되어 있으면 Windows가 해당 경로에없는 경우에도 프로그램을 찾을 수 있습니다. 따라서 Windows는 CMD가 사용하는 PATH에서 CMD가 찾는 것보다 더 많은 것을 찾을 수 있습니다.

% USERPROFILE % 또는 % LOGONSERVER % 또는 % TEMP % / % TMP %와 같은 환경 변수를 참조 할 수 있도록 CMD를 실행하려는 경우 가능한 이점 중 하나는 그렇게하지 않기 때문입니다. " CMD /C" 을 (를) 실행해야합니다 .

따라서 특별한 경우 : 그렇게 할 이유가 없습니다. 당신이 달성하는 효과는 컴퓨터가 더 많은 작업을하게하고, 프로세스 속도를 늦추고, 더 많은 메모리를 사용하게하는 것입니다 (모두 현대적인 장비에서는 무시할 수없는 양의 작업을합니다).


Bob이 제공 한 조언에 전적으로 동의합니다. 밥은 당신을 올바른 길로 인도하고있었습니다. 하지만 글을 읽을 때 더 많은 정보가 좀 더 명확성을 제공하는 데 도움이 될 수 있다고 생각했습니다.
TOOGAM September

2
다른 우선 순위로 프로세스를 시작하는 것이 좋습니다 cmd /c. 같은 것 cmd /c start /low Notepad.exe.
Lieven Keersmaekers

좋은 대답입니다. 내가 언급 한 한 가지는 cmd의 autorun 도 실행 하지만 일반적으로 설정되지 않으며 설정되어 있어도 파일 연결에서 바람직 하지 않습니다 . 그리고 Lieven은 우선 순위로 좋은 지적을하지만, 파일 연결에는 조금 이상하다고 생각합니다.
Bob

1
cmd 자체는 환경 변수를 설정하지 않습니다. 환경은 부모 프로세스에서 상속되며 사이에 cmd를 추가해도 아무런 변화가 없습니다. App Paths는 CreateProcess가 아닌 내가 아는 한 ShellExecute에만 사용되므로 대부분의 상황 (특히 셸)에서는 적용되지 않습니다 (직접 시도 할 수 pbrush있으며 App Path이며 mspaint작동하지 않습니다) 여러 곳).
Joey

@Joey는 아마도 변수를 확장한다고 말하는 것이 더 정확할 것입니다 ...하지만 그것을 생각 REG_EXPAND_SZ하면 %syntax%cmd를 호출하지 않고 환경 변수를 확장 할 수 있습니다 (동일한 사용 ). 파일 연결에 사용되는 동사는을 통해 호출 ShellExecuteEx되므로 앱 경로가 여기에 적용됩니다.
Bob

18

그것은 착색을 제거하기 때문에.

사람들이 파란색 배경이 산만 해 졌다고 생각할 수도 있습니다.


1
Windows를 가지고 있지 않지만 콘솔 속성에서 배경색을 설정할 수는 없습니까?
Ruslan

1
내 의견에 대한 경쟁적인 답변 임에도 불구하고 반대 이유는 없습니다. 이것은 합리적인 이유이기 때문입니다. 잘 했어. 물론, 어떤 사람들은 블랙 박스가 블루 박스보다 더 산만하다는 것을 알 수 있습니다. 그러나 그것은 선호의 문제이며 사람들은 다른 선호도를 가질 수 있으므로 좋고 정확한 답변을 얻으려면 +1하십시오. @Rusland : 예. 그러나 빠른 프로그램이 사라지기 전에 변경 사항을 적용 할 수 있습니까? (또한 한 세션의 변경 사항이 다른 세션에 영향을 미치는지 여부를 알고 있습니다. 일반적인 경우와 데스크탑 아이콘과 같은 특정 경우에 따라 설정이 달라
집니까

내 기본 콘솔로 conEmu을 사용하기 때문에 나는 항상 내 잘 구성 콘솔 창을 얻을 의미를 알 수 없다. (너무 십분 아래에 아스키 아트 및 사용자 정의 메시지 및 불타는 횃불의 GIF를로드와 함께!)
STIB

1

을 사용 cmd powershell하면 현재 쉘 탐색기에 powershell, "imageSeqView ..."구문 분석 된 값이 % 1 인 매개 변수가 있는 cmd를 cmd를 호출하도록 요청합니다 .

이 경우 "powershell"cmd는 cmd 명령, exe 또는 cmd가 지원하는 스크립트 (예 : bat) 중 하나 일 것으로 예상됩니다.

을 사용 powershell "imageSeqView ..."하면 현재 셸 탐색기에 파싱 ​​된 값이 % 1 인 powershell매개 변수 imageSeqView ...를 powershell 에 호출하도록 요청합니다 .

이 경우 imageSeqViewpowershell은 " "이 (가) cmdlet, exe 또는 powershell 스크립트 일 것으로 예상합니다.

" imageSeqView"이 파워 쉘 기능인 경우 첫 번째 방법은 완전히 불필요하며 성능이 약간 저하됩니다.

명령 창 옵션의 경우 powershell에는 -NoExit와 유사한 옵션이 있으며 cmd의 / K와 동일해야합니다.

파이프 라이닝, 환경 변수 초기화의 경우 powershell이 ​​동일하게 수행 할 수 있습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.