두 개의 폴더를 동기화하기 위해 스크립트에서 사용하는 로그 파일을 robocopy에서 만들려고합니다. 폴더에는 그리스 문자로 된 파일 이름이 들어 있습니다. 다음 명령을 읽을 수있는 로그 파일 생성 모두 데프 코드 페이지는 그리스어 내 워크 스테이션에서 :robocopy 로그에 유니 코드 파일 이름 가져 오기 powershell에서
ROBOCOPY \\app-srv\D\DocumentFiles\2012\10\8\ \\hyper-v9\W\DocumentFiles\2012\10\8\ /IA:AO /FP /NP /E /L /V /TEE /UNILOG:myfiles.txt
ROBOCOPY \\app-srv\D\DocumentFiles\2012\10\8\ \\hyper-v9\W\DocumentFiles\2012\10\8\ /IA:AO /FP /NP /E /L /V | Tee-Object myfiles.txt
내가 받기를 실행할 서버 (US-EN 코드 페이지) On "으로?" 또는 중국어 문자 또는 제어 문자 (다양한 테스트 ..)
나는 행운을 가지고 /LOG:myfiles.txt, /UNICODE /LOG:myfiles.txt, /UNICODE /UNILOG:myfiles.txt, | Out-File myfiles.txt -Encoding utf8, | Out-File myfiles.txt -Encoding unicode
과 모든 변형을 시도했다.
dir
/ls
으로 나는 파일이 올바른 볼 수 있습니다.
PC :
PS C:\tmp> $OutputEncoding
IsSingleByte : True
BodyName : us-ascii
EncodingName : US-ASCII
HeaderName : us-ascii
WebName : us-ascii
WindowsCodePage : 1252
IsBrowserDisplay : False
IsBrowserSave : False
IsMailNewsDisplay : True
IsMailNewsSave : True
EncoderFallback : System.Text.EncoderReplacementFallback
DecoderFallback : System.Text.DecoderReplacementFallback
IsReadOnly : True
CodePage : 20127
PS C:\tmp> [Console]::OutputEncoding
IsSingleByte : True
BodyName : ibm737
EncodingName : Greek (DOS)
HeaderName : ibm737
WebName : ibm737
WindowsCodePage : 1253
IsBrowserDisplay : False
IsBrowserSave : False
IsMailNewsDisplay : False
IsMailNewsSave : False
EncoderFallback : System.Text.InternalEncoderBestFitFallback
DecoderFallback : System.Text.InternalDecoderBestFitFallback
IsReadOnly : True
CodePage : 737
서버 : N 여전히
[Console]::OutputEncoding = [System.Text.Encoding]::GetEncoding("IBM737")
.. 그리고 :
PS C:\sw> $OutputEncoding
IsSingleByte : True
BodyName : us-ascii
EncodingName : US-ASCII
HeaderName : us-ascii
WebName : us-ascii
WindowsCodePage : 1252
IsBrowserDisplay : False
IsBrowserSave : False
IsMailNewsDisplay : True
IsMailNewsSave : True
EncoderFallback : System.Text.EncoderReplacementFallback
DecoderFallback : System.Text.DecoderReplacementFallback
IsReadOnly : True
CodePage : 20127
PS C:\sw> [Console]::OutputEncoding
IsSingleByte : True
BodyName : IBM437
EncodingName : OEM United States
HeaderName : IBM437
WebName : IBM437
WindowsCodePage : 1252
IsBrowserDisplay : False
IsBrowserSave : False
IsMailNewsDisplay : False
IsMailNewsSave : False
EncoderFallback : System.Text.InternalEncoderBestFitFallback
DecoderFallback : System.Text.InternalDecoderBestFitFallback
IsReadOnly : True
CodePage : 437
는 난과 콘솔 인코딩을 수정하는 시도 행운 (또한 chcp 65001).
모든 조언을 주시면 감사하겠습니다.
이상한. 어떤 방법으로 당신은 "??" 또는 중국어 문자 또는 제어 문자 _? 첫 번째'ROBOCOPY .../UNILOG : myfiles.txt'는 나를위한'UTF-16 LE' 바이트 순서 마크를 가진'myfiles.txt' 유니 코드를 만듭니다 (그리스어는 없지만 체코 어 시스템, 즉 기본 라틴어 폰트/스크립트). – JosefZ
안녕하세요, /LOG:myfiles.txt -> 10 \ 8 \ Â Â Â? אב? באוח ??? ד ??? (메모장 + +에서 ISO 8859-8) /UNILOG:myfiles.txt -> 獥 ㉜ 尲 㡜 㜰 㜰 瀮 晤 ऊ † † † 瑡 扩 † (화면 ok) /UNICODE | 외부 파일 myfiles.txt - 인코딩 인코딩 utf8 -> 䴠 㼿 㿧 㼠 㼿 㼠 㼿 㼿 㼿 㼿 㼿 㼿 † 㿧 㼿 搮 捯 ऊ † † ..etc robocopy의 버전을 확인해야합니까? – tfonias74
'/UNILOG:myfiles.txt -> 獥 ㉜ 尲 〱 㡜 ㅜ 㜰 瀮 晤 ऊ †††† 瑡 牴 扩 उ †'조금 senseful 텍스트 조각 107 \ 10 \ 8 \ \ 2,012 말이지'나와 있습니다. pdf attrib'를 사용하거나'powershell -c $ x = ''; Get-Content "myfiles.txt"-encoding byte^| 'chcp 852' 또는'chcp 1250' 모두에서 열려있는'cmd '창에서 ForEach-Object {$ x + = [char] $ _}; $ x'; 어쩌면 당신은 그리스어 코드 페이지'chcp 737' 또는'chcp 1253'에서 시도 할 것입니다. 그런 다음 메모장 ++에서 열기 위해 강제 인코딩을 강제합니다. 내'robocopy'는 ResourceHacker에 의해 "ProductVersion", "6.3.9600.17415"'windows 8.1 64bit 영어입니다. – JosefZ