Powershell - чтение содержимого CSV, копирование файла с сетевого диска на локальный компьютер - PullRequest
0 голосов
/ 27 апреля 2020

В настоящее время я занимаюсь реструктуризацией файлового каталога сервера 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) не возвращает размер файла, что приводит меня к мысли, что есть проблема с переменной!?

Что-то, что мне нужно добавить?

Большое спасибо

Джонни

...