Перемещение файлов на основе значений CSV из двух столбцов - PullRequest
0 голосов
/ 15 сентября 2011

Я работал над сценарием, который перемещает файлы в каталоге в дочерний каталог, который создается, если столбец «папка» содержит «Y». Файлы, которые не имеют «Y» в соответствующем столбце этой папки, перемещаются в папку с самым предыдущим именем файла с Y.

У меня возникли проблемы с командлетом move-item. Это влияет на меня, когда я пытаюсь переименовать элемент в другом скрипте, так что я думаю, что это как-то связано с тем, как я пытаюсь получить доступ к имени файла существующих файлов в папке.

$sourceDir = read-host "Please enter source Dir:"

$csv = import-csv C:\scripts\files\files.csv
$csv | where {$_.folder -eq 'Y'} | % {

        $path = $sourceDir + "\" + $_.fileName
        if(-not $_.PSIsContainer)
        {
            md $path
        }#end if
    }#end for

$move = ".\" + $csv[0].fileName 
$csv | % {
            if ($_.folder -eq 'Y')
            {
                $move = ".\" + $_.fileName
                mi $_.fileName "$move"
            }
            mi $_.fileName "$move"
        } #end for

Опять ми, похоже, выдает ошибку. Первый цикл for создает папки правильно, а второй падает. Я возился с этим, и я смог заставить его переместить файлы, которые соответствуют.

Извините, это была более старая версия скрипта после того, как у меня возникли проблемы с перемещением.

Move-Item : Cannot find path 'C:\scripts\BB.026.001.001.0017' because it does not exist.
At C:\scripts\Y2.ps1:25 char:7
+                 mi  <<<< $_.fileName "$move"
Move-Item : Cannot find path 'C:\scripts\BB.026.001.001.0017' because it does not exist.
At C:\scripts\Y2.ps1:27 char:6
+             mi  <<<< $_.fileName "$move"
Move-Item : Cannot find path 'C:\scripts\BB.026.001.001.0018' because it does not exist.
At C:\scripts\Y2.ps1:27 char:6
+             mi  <<<< $_.fileName "$move

"

Необходимо указать расширение файла и правильный путь Спасибо,

Craig.

1 Ответ

0 голосов
/ 15 сентября 2011

ОК, я не уверен, где у вас хранится расширение файла, но я переписал ваш скрипт, поместив все в один цикл foreach с помощью оператора IF, чтобы указать, должна ли быть создана папка.*

Дайте мне знать, если я далеко от цели, если я на цели, вам просто нужно обновить пути и расширение файла.Кроме того, нет проверки ошибок, и я не использовал параметр -force при перемещении файла для принудительной перезаписи.Сценарий также зависит от первой строки в CSV с буквой «Y» в столбце папки, чтобы обеспечить заполнение переменной $ destPath.

...