通过CSV循环,重命名文件并移动到PowerShell中的不同目录

时间:2016-05-31 14:56:30

标签: csv powershell foreach

我有一些循环通过CSV并重命名文件的代码,但是我无法让Move-Item部分工作。任何帮助,将不胜感激。感谢

$lines = Import-Csv $extractFile
foreach($line in $lines){
get-childitem C:\Docs\* | where {$_.name -eq $line.OldFileName} | Rename-Item -NewName $line.NewFileName | Move-Item -Destination C:\Renamed
       }

1 个答案:

答案 0 :(得分:1)

假设您的csv文件与我的相似,这对我有用。你可以删除我的$ fileinfo部分并取消注释第一行。

#$fileinfo = Import-Csv $extractFile
$fileinfo = @'
oldfilename,newfilename
test1.txt,newtest1.txt
test2.txt,newtest2.txt
'@ | convertfrom-csv

$source = 'c:\docs'
$dest = 'c:\renamed'
foreach($line in $fileinfo) {
    Get-ChildItem $source -Filter $line.OldFileName | % {
        Move-Item $_.FullName -Destination $(Join-Path $dest $line.NewFileName)
    }
}

未测试此部分,但您可以像这样缩短主线:

Get-ChildItem $source -Filter $line.OldFileName | Move-Item -Destination $(Join-Path $dest $line.NewFileName)