stdout을 'name'에 특수 문자가있는 파일로 리디렉션 할 때 이상한 동작이 나타났습니다.이상한 stdout 리디렉션 동작
것들은는 내가 발견했습니다
echo.>f,test
텍스트 ,test
을 포함, f
라는 파일을 생성합니다. .
, ;
및 <space>
과 동일합니다 (분명히 쉼표는 어떤 문자로 변경됩니다).
echo.>f.:test
은 F~000%HK
이라고하는 0 바이트의 파일을 생성합니다. 출력 파일 이름의 첫 번째 문자는 리디렉션 문자와 .:
사이의 리디렉션 '파일 이름'에 해당합니다 (.
은 무시됩니다/f....
이라는 파일을 만들려고하는 같은 이유로 인해 제거 된 파일은 f
이라는 파일을 만듭니다) . '파일 이름'이 변경된 후에 텍스트를 변경하면 나머지는 무엇을 의미하는지 알 수 없습니다. 즉 echo.>f.:nope
은 여전히 빈 파일 F~000%HK
을 생성합니다.
같은 일의 또 다른 예; echo.>test.:test
은 TEST~4N5
이라고하는 0 바이트의 파일을 생성합니다.
배치에서 후자의 예제는 이상한 이름의 빈 파일과 동일한 결과를 생성하지만 이전 예제에서는 빈 줄이 포함 된 f
파일을 생성합니다.
설명/'anomalies'를 추가 하시겠습니까?
첫 번째 것은 간단하며 쉼표는 종결 자로 취급되어 파일 이름이 끝납니다. 대신'echo.> "f, test"를 사용하십시오. 필자는 다른 사례를 재현 할 수는 없지만'file : test'는 [대체 데이터 스트림]에 대한 유효한 경로 이름입니다 (http://msdn.microsoft.com/en-us/library/windows/desktop). /aa364404%28v=vs.85%29.aspx)는'file'이라는 이름의 파일에'test'라고 이름을 붙였습니다. –
내 시스템에서 두 번째 경우는 "시스템이 지정된 경로를 찾을 수 없습니다."라는 메시지가 나타납니다. 필자는 F 드라이브가 없으므로 예상대로입니다. –
세 번째 경우는 예상대로 작동합니다. 즉, 대체 데이터 스트림이있는'test.'라는 빈 파일을 생성합니다. 어떤 OS를 사용하고 있습니까? –