В настоящее время я занимаюсь реструктуризацией файлового каталога сервера Windows, и мне нужно переименовать более 10 000 файлов в разных папках, но большинство из них имеют повторяющиеся имена файлов (например, 0001.pdf, 0002.pdf)
Я написал скрипт Powershell, чтобы помочь мне сделать это, но у меня возникли некоторые проблемы с выполнением. Сценарий читает файл csv (экспорт всех файлов в структуре папок - export.csv), затем создает переменные $OldFilename
& $NewFileName
. Затем переменные используются для определения местоположения старого файла и его копирования в новое место назначения с помощью команды Copy-Item
для каждой строки в CSV.
Код
$csv = import-csv c:\tmp\test.csv
$csv | foreach-object {
$OldFileName =$_.OldFileName
$NewFileName = $_.NewFileName
}
$csv | ForEach-Object {
$OldFileName =$_.OldFileName
$NewFileName = $_.NewFileName
Copy-Item $OldFileName -Destination $NewFileName
}
CSV отформатирован таким образом:
OldFileName,NewFileName
"X:\Folder1\0001.pdf","C:\temp\File0001.pdf"
"X:\Folder2\0001.pdf","C:\temp\File0002.pdf"
"X:\Folder3\0001.pdf","C:\temp\File0003.pdf"
Код не выдает ошибки при запуске, но файлы не отображаются.
A Write-Output
отображает правильный путь к файлу, но Write-Host((Get-Item $file).length/1MB)
не возвращает размер файла, что приводит меня к мысли, что есть проблема с переменной!?
Что-то, что мне нужно добавить?
Большое спасибо
Джонни