Переместить файл в другую папку

Я пытаюсь создать скрипт PowerShell, который перемещает список файлов в другую папку, в зависимости от имени файла. Один из примеров имени файла "Test-AMM - Report".

Исходное местоположение

\\oltnas6uk\sd.test.com$\PROJECTS\ Управление счетами \ Test-AMM - Отчет

Назначение файла

\\ammnasuk\ rd.test-amm.com $ \ Управление бизнесом \ Regular \ Reporting

Жирным шрифтом выделены клавиатуры, которые я могу использовать для определения местоположения файла.

1 ответ

Это довольно просто сделать.

Начните с получения списка файлов, которые вы хотите переместить в массив с именем $ files:

$files=get-childitem "\\oltnas6uk\sd.test.com$\PROJECTS\Account Management\"

Затем вы используете цикл foreach для итерации по массиву и используете переключатель в режиме регулярных выражений, чтобы сопоставить шаблоны в файле и определить, что делать:

foreach ($f in $files) {
    switch -regex ($f.Name) {
        "AMM" {
            try {
                Move-Item -Path $f.FullName -Destination "\\ammnasuk\rd.test-amm.com$\Business Management\Regular\Reporting" -Force
            } catch {
                Write-Host "Couldn't move file ($f.Name), error was $($_.Exception.Message)" -foregroundcolor red
            }
            break;
        }
        "BMM" {
            try {
                Move-Item -Path $f.FullName -Destination "\\bmmnasuk\rd.test-amm.com$\Business Management\Regular\Reporting" -Force
            } catch {
                Write-Host "Couldn't move file ($f.Name), error was $($_.Exception.Message)" -foregroundcolor red
            }
            break;
        }
    }
}

}

Я бы посоветовал вам добавить запись в ваш скрипт или потратить достаточно времени, чтобы убедиться, что совпадения с вашим шаблоном не приведут к неожиданным результатам. Если в месте назначения много файлов, также стоит провести сравнение со всеми ожидаемыми совпадениями, чтобы увидеть, сколько файлов не соответствует ни одному из ваших правил.

Другие вопросы по тегам