none
Изменение кодировки RRS feed

  • Вопрос

  • Добрый день!

    Необходимо с помощью робокопи вывести список файлов. На Windows 7 rus edition команда работает без проблем, все папки выводятся корректно.

    На Windows Server 2012 R2 en появилась ошибка - не может прочитать папки с русскими именами. chcp пробовал 866 и 1251 

    Скрипт для не Unicod программ установлен Russian.

    сам скрипт

    robocopy.exe C:\temp c:\doesnotexist /l /e /b /np /ns /nc /fp /njh /njs /r:0 /w:0


    если запустить cmd из под powershell с кодировкой 1251 отображается корректно

    Invoke-Command -ScriptBlock {& cmd.exe /c "dir с:\temp"}

    При запуске:

    Invoke-Command -ScriptBlock {& cmd.exe /c "robocopy.exe $path c:\doesnotexist /l /e /b /np /ns /nc /fp /njh /njs /r:0 /w:0 "} 

    ошибки кодировки тоже появляются.

    Что ещё можно попробовать ?


    • Изменено Kirill_p 16 марта 2016 г. 7:55
    16 марта 2016 г. 7:50

Ответы

  • Помог скрипт из соседней темы

    В итоге результат будет выглядеть следующим образом

    function ConvertTo-Encoding ([string]$From, [string]$To){
    	Begin{
    		$encFrom = [System.Text.Encoding]::GetEncoding($from)
    		$encTo = [System.Text.Encoding]::GetEncoding($to)
    	}
    	Process{
    		$bytes = $encTo.GetBytes($_)
    		$bytes = [System.Text.Encoding]::Convert($encFrom, $encTo, $bytes)
    		$encTo.GetString($bytes)
    	}
    }
    Invoke-Command -ScriptBlock { robocopy.exe G:\files c:\doesnotexist /l /e /b /np /ns /nc /fp /njh /njs /r:0 /w:0 } | ConvertTo-Encoding -From cp866 -To windows-1251
    Интересно только почему chcp 1251 в начале скрипта не помогает.

    • Помечено в качестве ответа Vector BCOModerator 16 марта 2016 г. 11:49
    16 марта 2016 г. 11:46