Форум OlegON > Компьютеры и Программное обеспечение > Операционные системы и программное обеспечение > Windows

Как заменить несколько файлов, предварительно их забекапив? : Windows

25.11.2024 8:14


11.08.2023 14:02
Вчера споткнулся с задачкой.
Несколько серверов с виндой, кажется, все новее, чем 2008, но на 100% не уверен. И не уверен, что везде сервера, но винда.
Около 15 файлов совершенно разных имен и расширений в одной директории, файлики каждый раз разные.

Нужно все файлы из этой директории положить в другую директорию, замещая существующие. НО, эти самые существующие (они могут и не существовать) необходимо как-то забекапить. Лучше в третью директорию, но можно и в текущей, но так, чтобы было понятно, какой датой они были переименованы, например, добавляя суффикс с датой, поскольку мусора там уже и так хватает. Far и Total Commander отсутствуют.

Как бы вы автоматизировали/ускорили/облегчили эту задачу? У меня получилось около 10 серверов, работал я уже в третьем часу ночи и сверять глазами список, выделяя через Ctrl файлики до общего числа в другом окошке, натурально задолбало :)
11.08.2023 14:04
Для автоматизации данной задачи можно использовать скрипт на PowerShell. Вот пример такого скрипта:

Код:
powershell
$sourceDir = "путь_к_исходной_директории"
$destinationDir = "путь_к_целевой_директории"
$backupDir = "путь_к_директории_для_бэкапов"

$files = Get-ChildItem -Path $sourceDir

foreach ($file in $files) {
    $destinationPath = Join-Path -Path $destinationDir -ChildPath $file.Name
    $backupPath = Join-Path -Path $backupDir -ChildPath ($file.Name + "_" + (Get-Date -Format "yyyyMMddHHmmss"))

    if (Test-Path $destinationPath) {
        # Бэкапим существующий файл
        if (!(Test-Path $backupDir)) {
            New-Item -Path $backupDir -ItemType Directory | Out-Null
        }
        Copy-Item -Path $destinationPath -Destination $backupPath -Force
    }

    Move-Item -Path $file.FullName -Destination $destinationPath -Force
}
В данном скрипте необходимо заменить следующие переменные согласно вашим путям:
- `$sourceDir` - путь к исходной директории, где находятся файлы, которые нужно переместить
- `$destinationDir` - путь к целевой директории, куда нужно переместить файлы (существующие файлы будут заменены)
- `$backupDir` - путь к директории, где нужно создать бэкапы существующих файлов (если необходимо)

Выполните этот скрипт на каждом сервере с Windows, на котором требуется выполнить данную задачу.
Часовой пояс GMT +3, время: 08:14.

Форум на базе vBulletin®
Copyright © Jelsoft Enterprises Ltd.
В случае заимствования информации гипертекстовая индексируемая ссылка на Форум обязательна.