Гид по технологиям

Работа с файлами в PowerShell: копирование, перемещение, удаление и переименование

4 min read PowerShell Обновлено 11 Apr 2026
Копирование, перемещение и удаление файлов в PowerShell
Копирование, перемещение и удаление файлов в PowerShell

Запуск PowerShell через меню Пуск

PowerShell — универсальный инструмент для администрирования Windows. Помимо многих возможностей автоматизации, с ним удобно управлять файлами: копировать, перемещать, удалять и переименовывать как одиночные файлы, так и целые каталоги. Ниже — подробные инструкции, часто задаваемые вопросы и практические приёмы.

Быстрая шпаргалка по основным командлетам

  • Copy-Item — копирует файл или папку.
  • Move-Item — перемещает файл или папку.
  • Remove-Item — удаляет файл или папку.
  • Rename-Item — переименовывает файл или папку.
  • Get-ChildItem — перечисляет содержимое каталога (аналог DIR/ls).
  • Test-Path — проверяет существование файла или пути.

Примеры базовых команд:

# Копировать один файл
Copy-Item -Path "C:\path\to\file.txt" -Destination "C:\DestinationFolder"

# Копировать папку и её содержимое
Copy-Item -Path "C:\path\to\Folder" -Destination "D:\Backup" -Recurse

# Переместить файл
Move-Item -Path "file.txt" -Destination "C:\DestinationFolder"

# Удалить файл (без корзины)
Remove-Item -Path "file.txt"

# Переименовать файл
Rename-Item -Path "C:\path\oldname.txt" -NewName "newname.txt"

Важно: Remove-Item удаляет напрямую, минуя Корзину. Перед опасными операциями используйте параметр -WhatIf, чтобы увидеть, что произойдёт без фактического изменения.

Как копировать файлы и папки

  1. Откройте PowerShell: нажмите кнопку Пуск, введите “powershell” и нажмите Enter.
  2. Перейдите в нужную папку, если удобно работать из неё:
Set-Location -Path "C:\Users\[ИмяПользователя]\Downloads"
  1. Копирование одного файла:
Copy-Item -Path "text1.txt" -Destination "C:\DestinationFolder"
  1. Копирование папки вместе со всем содержимым:
Copy-Item -Path ".\exampleFolder" -Destination "C:\DestinationFolder" -Recurse

Пояснения:

  • -Recurse — рекурсивно копирует вложенные каталоги и файлы.
  • -Force — позволяет перезаписывать файлы и работать с защищёнными атрибутами.
  • -WhatIf — показывает, какие действия будут выполнены, не изменяя файлов.

Пример с подстановкой (wildcard) и фильтрацией:

# Копировать все .txt файлы
Copy-Item -Path "*.txt" -Destination "C:\DestinationFolder"

# Копировать файлы, найденные через Get-ChildItem и фильтр
Get-ChildItem -Path "C:\Logs" -Filter "*.log" | Copy-Item -Destination "D:\Archive" -Force

Когда Copy-Item может не подойти:

  • Для больших объёмов данных или повторных синхронизаций лучше использовать RoboCopy (устойчив к обрывам соединения и сохраняет атрибуты). Пример:
robocopy "C:\Source" "D:\Destination" /MIR /Z /XA:SH
  • Для копирования файлов, занятых другими процессами, может понадобиться VSS (теневая копия) или специальные утилиты — Copy-Item не обходит блокировки файлов.

Скопировать файл в PowerShell — список файлов в папке

Как перемещать файлы и папки

Перемещение выполняется командлетом Move-Item. Он действует быстро и просто:

Move-Item -Path "C:\path\filename.txt" -Destination "D:\NewFolder"

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

Move-Item -Path "file1.txt", "file2.txt" -Destination "C:\DestinationFolder"

# Или с подстановкой
Move-Item -Path "*.bak" -Destination "C:\Backup"

Особенности:

  • При перемещении между разными дисками PowerShell фактически копирует и затем удаляет исходные файлы.
  • Используйте -WhatIf, чтобы предварительно увидеть результат.

Перемещение папок

Move-Item -Path "FolderName" -Destination "C:\DestinationFolder"

Перемещение файлов в PowerShell — окно консоли с командой

Как удалять файлы и папки

Удаление файлов:

Remove-Item -Path "filename.txt"

Удаление сразу нескольких файлов:

Remove-Item -Path "file1.txt", "file2.txt", "file3.txt"

Удаление папки с содержимым:

Remove-Item -Path "Folder" -Recurse

Советы по безопасности:

  • По умолчанию PowerShell может запрашивать подтверждение. Чтобы просмотреть действие без выполнения, добавьте -WhatIf.
  • Чтобы принудительно удалить без подтверждения, добавьте -Force.
  • Remove-Item удаляет сразу и не отправляет файлы в Корзину. Если нужно сначала положить в Корзину, используйте COM-объект Shell.Application:
# Отправить файл в Корзину через COM (не для всех сценариев, но работает в интерактивной сессии)
$shell = New-Object -ComObject Shell.Application
$recycleBin = $shell.Namespace(0xA)
$recycleBin.MoveHere("C:\path\to\file.txt")

Когда удаление может не сработать:

  • Файл занят другим процессом — сначала завершите процесс или перезагрузите систему.
  • Отсутствуют права на удаление — запустите PowerShell с правами администратора или измените разрешения.

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

Переименование одного файла:

Rename-Item -Path "C:\path\to\oldfilename.txt" -NewName "newfilename.txt"

Переименование папки:

Rename-Item -Path "C:\Downloads\oldfoldername" -NewName "newfoldername"

Массовое переименование с использованием скриплблока:

# Заменить пробелы в именах на нижнее подчёркивание для всех .txt файлов
Get-ChildItem -Path "C:\Docs" -Filter "*.txt" | Rename-Item -NewName { $_.Name -replace ' ', '_' }

# Добавить префикс к именам файлов
Get-ChildItem -Path "C:\Images" -Filter "*.jpg" | Rename-Item -NewName { "IMG_" + $_.Name }

Правило: в скриплблоке $_ представляет текущий объект — файл или папку.

Отладка, проверка и контроль успеха операций

Полезные проверки:

# Проверить, существует ли путь
Test-Path -Path "C:\DestinationFolder"

# Посчитать файлы в каталоге
(Get-ChildItem -Path "C:\DestinationFolder" -Recurse | Measure-Object).Count

# Сравнить содержимое двух папок
Compare-Object (Get-ChildItem "C:\Source" -Recurse | Select-Object -ExpandProperty FullName) (Get-ChildItem "D:\Dest" -Recurse | Select-Object -ExpandProperty FullName)

Для безопасного выполнения массовых изменений используйте рабочий цикл: 1) dry run с -WhatIf, 2) выполнить на тестовой папке, 3) применить в продакшене.

Рекомендации по правам и безопасности

  • Запускайте PowerShell от имени администратора только при необходимости.
  • Проверяйте права доступа (ACL) перед массовыми операциями: Get-Acl / Set-Acl.
  • Включайте параметр -WhatIf для рискованных команд и выполняйте резервные копии.

Практические сценарии и шаблоны

  1. Синхронизация папки проекта в резервную копию (используйте Robocopy для устойчивости):
robocopy "C:\Project" "D:\Backups\Project" /MIR /Z /R:3 /W:5
  1. Перемещение логов старше 30 дней в архив:
Get-ChildItem -Path "C:\Logs" -Filter "*.log" -Recurse | Where-Object { $_.LastWriteTime -lt (Get-Date).AddDays(-30) } | Move-Item -Destination "D:\Archive\OldLogs" -WhatIf
  1. Удаление временных файлов с подтверждением:
Get-ChildItem -Path "C:\Temp" -Filter "*.tmp" -Recurse | Remove-Item -WhatIf

(После проверки уберите -WhatIf для фактического выполнения.)

Роли и чек-листы

Для администратора:

  • Проверить права на папки.
  • Сделать резервную копию перед массовыми удалениями.
  • Использовать -WhatIf и журналирование.

Для обычного пользователя:

  • Работать в своей папке профиля.
  • Избегать запуска PowerShell с правами администратора для простых задач.

Для SRE/операций:

  • Автоматизировать с учётом ретраев и логов.
  • Использовать инструменты для надёжных копий (RoboCopy, rsync через WSL).

Критерии приёмки

  • Все целевые файлы корректно скопированы/перемещены/удалены согласно заданию.
  • Команды протестированы в dry-run (-WhatIf) и на тестовом наборе данных.
  • Логи операций сохранены и доступны для аудита.

Часто задаваемые вопросы

В: Можно ли восстановить файл после Remove-Item?

A: Обычно нет — Remove-Item удаляет файл без отправки в Корзину. Восстановление возможно только с помощью резервных копий или специализированных инструментов восстановления.

В: Как избежать перезаписи при копировании?

A: Перед копированием проверяйте наличие файла через Test-Path или используйте логику в скрипте: если (Test-Path) { создать уникальное имя }.

В: Можно ли копировать открытые файлы?

A: Копирование открытых/заблокированных файлов может не сработать. Для таких сценариев используйте VSS или утилиты, поддерживающие теневые копии.

Итог

PowerShell даёт гибкий и мощный набор инструментов для работы с файловой системой: Copy-Item, Move-Item, Remove-Item и Rename-Item покрывают большинство задач. Применяйте -WhatIf и тестируйте команды на небольших наборах данных, используйте RoboCopy для больших объёмов и учитывайте права доступа.

Окно PowerShell с копированием файлов и прогрессом

Краткий чек-лист перед массовыми операциями:

  • Сделать резервную копию важных данных.
  • Запустить -WhatIf для предварительной проверки.
  • Убедиться в правах доступа.
  • Журналировать результат операции.
Поделиться: X/Twitter Facebook LinkedIn Telegram
Автор
Редакция

Похожие материалы

Отключить уведомления Facebook Live
Социальные сети

Отключить уведомления Facebook Live

AO3: как публиковать и улучшать тексты
Писательство

AO3: как публиковать и улучшать тексты

Chakra UI — форма входа в React
Frontend

Chakra UI — форма входа в React

Как настроить Google Assistant на Android и iOS
Голосовой помощник

Как настроить Google Assistant на Android и iOS

Ошибка Disney+ Error 83 — как исправить
Стриминг

Ошибка Disney+ Error 83 — как исправить

Отключить уведомления Почты в Windows 10
Windows

Отключить уведомления Почты в Windows 10