none
Powershell переименовать папку с русскими символами RRS feed

  • Вопрос

  • [string]$path            = "\\data1\HDTV5\",                        # Расположение папки
    # получаем список подпапок заданной папки
    [string[]]$path_all = @(Get-ChildItem - ($path + "*") |sort Name ) | where {$_.Attributes -eq 'Directory'}

    затем возникает следующая проблема
    Многие имена папок полученные в переменную $path_all содержат русские символы
    и к примеру

    PS D:\_Onliner\Onliner> $path_all[0]
    \\data1\HDTV5\12 Years a Slave (2013) [12 лет рабства]
    PS D:\_Onliner\Onliner> $path_all[1]
    \\data1\HDTV5\127 Hours (2010)
    PS D:\_Onliner\Onliner> $path_all[2]
    \\data1\HDTV5\28 Days Later (2002)
    PS D:\_Onliner\Onliner> $path_all[3]
    \\data1\HDTV5\300 (2006)
    PS D:\_Onliner\Onliner> $path_all[4]
    \\data1\HDTV5\About Time (2013) [Бойфренд из будущего]
    PS D:\_Onliner\Onliner> $path_all[5]
    \\data1\HDTV5\Air America (1990) [Эйр Америка]

    PS D:\_Onliner\Onliner> Test-Path $path_all[0]
    False
    PS D:\_Onliner\Onliner> Test-Path $path_all[1]
    True
    PS D:\_Onliner\Onliner> Test-Path $path_all[2]
    True
    PS D:\_Onliner\Onliner> Test-Path $path_all[3]
    True
    PS D:\_Onliner\Onliner> Test-Path $path_all[4]
    False
    PS D:\_Onliner\Onliner> Test-Path $path_all[5]
    False

    Т.е. если в пути к папке содержатся русские символы то по мнению powershell такой папки не существует.
    А так-же не работает команда

    PS D:\_Onliner\Onliner> Rename-Item $path_all[0] "newname"
    Rename-Item : Cannot rename because item at '\\data1\HDTV5\12 Years a Slave (2013) [12 лет рабства]' does not exist.
    At line:1 char:1
    + Rename-Item $path_all[0] "newname"
    + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
        + CategoryInfo          : InvalidOperation: (:) [Rename-Item], PSInvalidOperationException
        + FullyQualifiedErrorId : InvalidOperation,Microsoft.PowerShell.Commands.RenameItemCommand
        
    В общем вопрос как переименовать с помощью powershell папку с русскими символами
    В общем уточнение.
    Глюки начинаются тогда когда в имени присутствуют русские символы и квадратные скобки
    • Изменено korggrodno3 10 декабря 2014 г. 11:51
    10 декабря 2014 г. 11:32

Ответы

  • Проблема не в русском языке, а в спец. сиволах, типа []. Поэтому используйте параметр -LiteralPath:

    Rename-Item -LiteralPath $path_all[0] "newname"

    • Помечено в качестве ответа KazunEditor 12 декабря 2014 г. 5:50
    10 декабря 2014 г. 11:34
    Отвечающий