PsExec을 사용하여 특정 파일 (주로 배치)을 실행할 때 명령 전에 이상한 ́╗┐ '기호가 나타납니다. 내 생각은 잘못된 인코딩을 사용하고 있었지만 확인 후 모든 파일이 UTF-8을 사용하고 있음을 깨달았습니다.
PsExec을 사용하여 특정 파일 (주로 배치)을 실행할 때 명령 전에 이상한 ́╗┐ '기호가 나타납니다. 내 생각은 잘못된 인코딩을 사용하고 있었지만 확인 후 모든 파일이 UTF-8을 사용하고 있음을 깨달았습니다.
답변:
내 명령 […] 전에 모든 이상한 파일이 UTF-8을 사용하고 있습니다.
여기에는 두 가지 원인이 있습니다.
cmd.exe 는 UTF-8을 지원하지 않습니다. 시스템의 국가 별 설정에 따라 항상 "OEM"이라고하는 단일 바이트 인코딩 중 하나 인 cp437, cp775 등을 사용합니다.
(UTF-16도 지원할 것으로 예상했지만 UTF-16 BOM을 추가 한 경우에도 그렇지 않습니다.)
텍스트 편집기가 EF
BB
BF
모든 UTF-8 파일의 시작 부분에 UTF-8 "바이트 순서 표시"(bytes )를 추가하고 있습니다.
cmd.exe 는 스크립트를 읽을 때 마크로 무엇을해야할지 몰라 BOM을 3 개의 일반 cp437 문자로 인식 ’
╗
┐
하여 명령 이름의 일부로 사용하려고합니다.
UTF-8 인코딩 파일에 BOM 추가를 중지하도록 편집기를 구성하십시오. (UTF-16에서만 의미가 있으며 UTF-8에서는 매우 쓸모 가 없습니다.)
배치 파일을 exe로 컴파일하면 문제가 해결됩니까?
어
뭐
더에 @를 dsolimano의 대답 이 경우, 특별히 사용하는 비주얼 스튜디오를 , 그리고 내 경우에 그건 2013 , 나는 다음을 수행하여 고정 :
이제 Visual Studio 내에서 .bat 파일 을 열면 처음에 다음과 같은 메시지가 표시됩니다.
해당 언어 의 DOS 옵션 이 나올 때까지 옵션을 자세히 살펴보고 싶을 것입니다.
파일 열기를 마치 려면 확인 을 클릭하십시오 .
이 시점에서 분명해야하지만 ∩╗┐
파일의 시작 부분에 문자 가 표시 되면 올바른 인코딩으로 파일을 제거하고 파일을 저장해야합니다. 다음 번에 다시 프롬프트가 표시되지 않습니다.
대신에이 모든, 당신은 당신이 지금 수 있다는 것을 알고 기뻐합니다 보기 , 편집 및 저장 하여 .BAT 내에서 파일 (들) 비주얼 스튜디오 있도록 cmd.exe를이 더 이상 당신의 전술 가증스러운 오류가 있습니다 :
'∩╗┐' 는 내부 또는 외부 명령, 작동 가능한 프로그램 또는 배치 파일로 인식되지 않습니다.
이것들은 유니 코드 바이트 순서 마크 입니다. Cmd.exe가이를 이해하지 못합니다. ANSI 인코딩으로 메모장에 파일을 다시 저장하면 문제가 해결됩니다.
예를 들어이 배치 파일을 만들었습니다.
echo Hello World
먼저 UTF-8 인코딩으로 저장합니다.
C:\Users\DSolimano\Desktop\junk>test.bat
C:\Users\DSolimano\Desktop\junk>echo Hello World
'echo' is not recognized as an internal or external command,
operable program or batch file.
그런 다음 유니 코드로
C:\Users\DSolimano\Desktop\junk>test.bat
C:\Users\DSolimano\Desktop\junk>■e
'■e' is not recognized as an internal or external command,
operable program or batch file.
그리고 마지막으로 ANSI
C:\Users\DSolimano\Desktop\junk>test.bat
C:\Users\DSolimano\Desktop\junk>echo Hello World
Hello World