2016-09-28 85 views
0

我試圖創建ROBOCOPY一個日誌文件,我在腳本中使用同步兩個文件夾。 這些文件夾包含希臘字符的文件名。 在我的工作站的DEF代碼頁是希臘這兩個以下命令創建一個可讀的日誌文件:上ROBOCOPY日誌獲取Unicode文件名從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代碼頁)「??」或者中國的字符或控制字符(含各種測試..)

我曾試圖/LOG:myfiles.txt, /UNICODE /LOG:myfiles.txt, /UNICODE /UNILOG:myfiles.txt, | Out-File myfiles.txt -Encoding utf8, | Out-File myfiles.txt -Encoding unicode並沒有運氣的所有變化。

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

服務器

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 

我甚至試圖與修改控制檯編碼:

[Console]::OutputEncoding = [System.Text.Encoding]::GetEncoding("IBM737") 

..和靜像N o運氣(還有chcp 65001)。

任何意見將不勝感激!

+0

奇怪。你以哪種方式獲得「??」或漢字或控制字符_?你的第一個'ROBOCOPY .../UNILOG:myfiles.txt'爲我創建帶有'UTF-16 LE'字節順序標記的'myfiles.txt' Unicode(沒有希臘語,但捷克語系統,即默認的拉丁字體/腳本)。 – JosefZ

+0

嗨, /LOG:myfiles.txt - > 10 \ 8 \כ?אב?באוח??? ד??? ?כמ(來自ISO 8859-8記事本++) /UNILOG:myfiles.txt - >獥㉜㄰尲〱㡜ㅜ㜰瀮晤ऊ††††瑡牴擴उ†(屏幕OK) /UNICODE |出文件myfiles.txt -Encoding UTF8 - >䴠㼿㿠㿧㼠㼿㼠㼿㼿㼿㼿㼿㼿㿧㼿㼿搮捯ऊ†† ..等 你能告訴我robocopy的版本,你必須檢查一些東西? – tfonias74

+0

'/UNILOG:myfiles.txt - >獥㉜㄰尲〱㡜ㅜ㜰瀮晤ऊ††††瑡牴擴उ†'給我一個位senseful文本片斷'上課\ 2012 \ 10 \ 8 \ 107。 pdf attrib'使用'type myfiles.txt'或使用'powershell -c $ x =''; Get-Content「myfiles.txt」-encoding byte^| ForEach-Object {$ x + = [char] $ _};在'chcp 852'或'chcp 1250'下打開'cmd'窗口的$ x';也許你會在希臘代碼頁「chcp 737」或「chcp 1253」下嘗試。然後,強制在記事本++中打開正確的編碼。我的'robocopy'是ResourceHacker的''ProductVersion',「6.3.9600.17415」'windows 8.1 64bit English。 – JosefZ

回答

0

我的服務器2008上的ROBOCOPY版本R2是XP027(5,1,10,1027)。我在某處讀到XP026(5,1,2600,26)工作正常,事實是,它的工作原理應該如此!

版XP026:包含在Microsoft的Robocopy GUI

我也曾嘗試運行新的10.x版本(視窗10),但它失敗的OS檢查。