2016-09-28 83 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检查。