Windows 7의 cmd.exe에서 파이프가 작동하지 않습니다.

Windows 7의 cmd.exe에서 파이프가 작동하지 않습니다.

내 컴퓨터의 Windows 7 64비트에서 파이프 명령이 작동하지 않는 몇 가지 매우 이상한 문제가 발생하기 시작했습니다. 다음과 같은 명령:

 echo test | more  

이전에는 문제 없이 작동했지만 이제는 다음 오류 메시지와 함께 실패합니다.

'.COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH;.MSC' is not recognized as an internal or external command, operable program or batch file.  

또한 파이프의 왼쪽과 오른쪽에 무엇이 있는지는 중요하지 않은 것 같습니다. 파이프가 포함된 명령줄 명령은 모두 실패합니다. 또한 파이프의 오른쪽이 적절한 실행 파일이 아닌 경우에도 차이가 없는 것 같습니다.

예를 들어 다음은 모두 동일한 실패 동작을 나타냅니다.

type file1 | findstr blah
dir | thisdoesnotexist

이 모든 것이 일주일 전에는 잘 작동했는데 무엇이 바뀌었을지 잘 모르겠습니다. 작동이 중지된 시점에 Windows 업데이트가 발생했을 가능성이 있지만 확실하지는 않습니다.

내 변수 %PATH%%PATHEXT%환경 변수도 모두 괜찮아 보입니다. 해당 내용은 다음과 같습니다.

Path=C:\Program Files\Common Files\Microsoft Shared\Microsoft Online Services;
C:\Program Files (x86)\Common Files\Microsoft Shared\Microsoft Online Services;
C:\Windows\system32;
C:\Windows;
C:\Windows\System32\Wbem;
C:\Windows\System32\WindowsPowerShell\v1.0\;
C:\Program Files (x86)\Common Files\Roxio Shared\DLLShared\;
C:\Program Files (x86)\Common Files\Roxio Shared\10.0\DLLShared\;
C:\Programs\WinMerge;
C:\Programs\TortoiseHg\;
C:\Programs\MySQL\MySQL Server 5.1\bin;
C:\Programs\Aldec\Active-HDL 9.1\bin;
C:\Programs\Tcl\bin;
C:\Programs\modeltech_pe_10.0b\win32pe;
C:\Programs\Atlassian\atlassian-plugin-sdk-3.2.3\bin;
C:\Xilinx\12.4\ISE_DS\ISE\bin\nt64;
C:\altera\12.1\quartus\bin64

PATHEXT=.COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH;.MSC  

파이프 없이 이러한 명령을 사용하면 문제가 없으며 파일로/에서 리디렉션도 잘 작동합니다. 이벤트 로그에 아무 것도 나타나지 않으므로 프로그램이 올바르게 종료되는 것 같습니다.

그러한 문제의 원인이 무엇인지 아는 사람이 있습니까?

답변1

ComSpec 변수 정의가 잘못 정의된 것 같습니다. ComSpec 변수는 CMD.EXE에 대한 전체 절대 경로를 보유해야 합니다. 파이프의 양쪽은 ComSpec의 정의를 통해 시작되는 새로운 CMD 스레드에 의해 실행됩니다. 귀하의 경우처럼 ComSpec이 유효하지 않으면 파이프가 실패합니다.

ComSpec이 유효한 실행 파일을 가리키지 않는 경우 특정 오류 메시지가 나타나는 이유를 파악하지 못했습니다. 그러나 ComSpec을 부적절하게 설정한 다음 파이프를 사용하려고 하면 Vista에서도 동일한 메시지가 표시된다는 것을 확인했습니다.

관련 정보