2016-09-28 2 views
0

두 개의 폴더를 동기화하기 위해 스크립트에서 사용하는 로그 파일을 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).

모든 조언을 주시면 감사하겠습니다.

+0

이상한. 어떤 방법으로 당신은 "??" 또는 중국어 문자 또는 제어 문자 _? 첫 번째'ROBOCOPY .../UNILOG : myfiles.txt'는 나를위한'UTF-16 LE' 바이트 순서 마크를 가진'myfiles.txt' 유니 코드를 만듭니다 (그리스어는 없지만 체코 어 시스템, 즉 기본 라틴어 폰트/스크립트). – JosefZ

+0

안녕하세요, /LOG:myfiles.txt -> 10 \ 8 \ Â Â Â? אב? באוח ??? ד ??? (메모장 + +에서 ISO 8859-8) /UNILOG:myfiles.txt -> 獥 ㉜ ㄰ 尲 㡜 㜰 㜰 瀮 晤 ऊ † † † 瑡 扩 † (화면 ok) /UNICODE | 외부 파일 myfiles.txt - 인코딩 인코딩 utf8 -> 䴠 㼿 㿧 㼠 㼿 㼠 㼿 㼿  㼿 㼿 㼿  㼿 † 㿧  㼿 搮 捯 ऊ † † ..etc robocopy의 버전을 확인해야합니까? – tfonias74

+0

'/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

답변

0

서버 2008 R2의 내 robocopy 버전은 XP027 (5, 1, 10, 1027)입니다. 나는 XP026 (5, 1, 2600, 26)이 잘 작동하고 어쨌든 진실은 정상적으로 작동한다는 것을 읽을 수있다.

버전 XP026 : 마이크로 소프트있는 Robocopy GUI

에 포함 나는 또한 새로운 버전 10.x에서 (창 10)를 실행 시도하지만 OS 검사를 실패합니다.

관련 문제