0
,이 배치 파일 :이 파이프 된 명령이 실패하는 이유는 무엇입니까? 파일 %의 V %이 .txt 존재와
PROMPT $g
SET v="d"
FOR %%F IN ("*.txt") DO (TYPE "%%F" )
FOR %%F IN ("*.txt") DO (SORT "%%F" )
FOR %%F IN ("*.txt") DO (TYPE "%%F" | SORT)
이
>PROMPT $g
>SET v="d"
>FOR %F IN ("*.txt") DO (TYPE "%F" )
>(TYPE "%v%.txt" )
content
>FOR %F IN ("*.txt") DO (SORT "%F" )
>(SORT "%v%.txt" )
content
>FOR %F IN ("*.txt") DO (TYPE "%F" | SORT )
>(TYPE "%v%.txt" | SORT )
The system cannot find the file specified.
>
을 생산하는 이유는 단지 라인이 파이프 명령을 가지고에서 "지정된 파일을 찾을 수 없습니다"?
완전 좋아. 명령은 배치 파일 ('%% F -> % v % .txt')을 실행중인'cmd' 인스턴스에서 먼저 구문 분석됩니다. 파이프의 각면은 ('% v % .txt -> "d".txt')를 파싱하고 명령을 실행하는 새로운 별도의 cmd 인스턴스에 의해 처리됩니다. –
@MC ND, 와우, 그건 바보 야. 어떻게 그 일이 예상 되니? 감사합니다. . – ChrisJJ
@ChrisJJ에서 파이프는 sdtout을 왼쪽의 * 프로세스 *에서 오른쪽의 * 프로세스 *의 stdin에 연결합니다. 유일한 해결책은 아니지만, 초기 유닉스 버전 이후에 그런 식으로 구현되어 왔으며 오늘날의 bash와 같은 쉘 방식으로 구현되었습니다. 그것은 작동하지만, 때로는 당신을 물지는 몇 가지 단점이 있습니다. –