我有一些循环通过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
}
答案 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)