Как переименовать файл или папку в PowerShell

Командлет «Rename-Item» изменяет имя указанного элемента. Этот командлет не влияет на содержимое переименованного элемента.

Вы не можете использовать Rename-Item для перемещения элемента, например, указав путь вместе с новым именем. Чтобы переместить и переименовать элемент, используйте командлет «Move-Item».

Общий вид команды переименования файла:

Rename-Item -path 'C:\ПАПКА\СТАРОЕ-ИМЯ' -NewName 'C:\ПАПКА\НОВОЕ-ИМЯ'

Пример изменения имени файла в PowerShell:

Rename-Item -path 'C:\file1.txt' -NewName 'C:\file1.bak'

Ещё один пример использования Rename-Item (обратите внимание, что с опцией -NewName указан не полный путь до файла, а только его имя):

Rename-Item -Path "c:\logfiles\daily_file.txt" -NewName "monday_file.txt"

Попытка переименовать и переместить файл:

Rename-Item -Path "project.txt" -NewName "d:\archive\old-project.txt"

Эта попытка завершиться ошибкой, поскольку командлет Rename-Item может только переименовывать файлы, но не перемещать их:

    Rename-Item : can't rename because the target specified represents a path or device name.
    At line:1 char:12
    + Rename-Item <<<<  -path project.txt -NewName d:\archive\old-project.txt
    + CategoryInfo          : InvalidArgument: (:) [Rename-Item], PS>  Move-Item -Path "project.txt" -De
    stination "d:\archive\old-project.txt"

Командлет Rename-Item используется также и для переименования ключей регистра:

Rename-Item -Path "HKLM:\Software\MyCompany\Advertising" -NewName "Marketing"

Пример переименования нескольких файлов

Смотрим содержимое папки:

Get-ChildItem *.txt

Пример вывода:

    Directory: C:\temp\files

    Mode                LastWriteTime         Length Name
    ----                -------------         ------ ----
    -a----        10/3/2019   7:47 AM           2918 Friday.TXT
    -a----        10/3/2019   7:46 AM           2918 Monday.Txt
    -a----        10/3/2019   7:47 AM           2918 Wednesday.txt

Выполняем переименование, обратите внимание, что имена файлов передаются по трубе (конвейеру):

Get-ChildItem *.txt | Rename-Item -NewName { $_.Name -replace '.txt','.log' }

Смотрим содержимое папки после переименования файлов:

Get-ChildItem *.log

Вывод:

    Directory: C:\temp\files

    Mode                LastWriteTime         Length Name
    ----                -------------         ------ ----
    -a----        10/3/2019   7:47 AM           2918 Friday.log
    -a----        10/3/2019   7:46 AM           2918 Monday.log
    -a----        10/3/2019   7:47 AM           2918 Wednesday.log

В последнем примере командлет «Get-ChildItem» получает все файлы в текущей папке с расширением «.txt», а затем передаёт их в «Rename-Item». Значением NewName становится результат выполнения блока скрипта, который выполняется до того, как значение будет передано в параметр NewName.

В блоке скрипта автоматическая переменная «$ _» представляет каждый файловый объект, когда он поступает в команду через конвейер. Блок скрипта использует оператор «-replace» для замены расширения каждого файла на «.log». Обратите внимание, что при сопоставлении с использованием оператора «-replace» регистр не учитывается.

Ошибка «Rename-Item: Access to the path '…' is denied».

При попытке переименовать системные папки и файлы может возникнуть ошибка, что доступ отклонён. Пример команды:

Rename-Item -path 'C:\Windows\SoftwareDistribution' -NewName 'C:\Windows\SoftwareDistribution.bak'

Вызовет ошибку:

Rename-Item: Access to the path 'C:\Windows\SoftwareDistribution' is denied.

Дело в UAC, которая не позволяет обычным пользователям без прав администратора изменять системные файлы и папки. Необходимо открыть PowerShell с правами администратора. Для этого нажмите Win+x и выберите «Windows PowerShell (администратор)»:

Рекомендуется Вам:

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

wp-puzzle.com logo