我正在尝试重命名多个文件夹中的一堆文件。文件名不是唯一的,因为它们位于多个目录中。因此,我想根据路径获取所有特定文件,然后使用Rename-Item cmdlet使它们唯一。
我正在使用Import-Csv cmdlet,因为我在文本文件中具有路径和新文件名(标题分别是oldPath和NewFileName)。
到目前为止,我已经知道了:
$documentList = @(Import-Csv -Path 'C:\Users\Desktop\testFolder\fileWithPathAndNewFileName.txt')
$Paths = (ForEach-Object {
(Gci -Path $documentList.oldPath)
})
$Paths | ForEach-Object {Rename-Item -Path $_.FullName -NewName "$($documentlist.newFileName)"}
不幸的是,这并没有真正起作用,但是感觉几乎就在那里。我认为-NewName参数是我搞砸的地方。我只是不确定如何从文本文件中正确填充NewFileName对象。任何帮助将非常感激。如果这看起来有些微不足道,我会提前道歉,很遗憾,我与Powershell不一致。
答案 0 :(得分:0)
您的代码有些混乱。 ;-) ...如果您有CSV文件,则应将其命名为* .csv。 如果我答对了,那么实际上就足够了:
$documentList = Import-Csv -Path 'C:\Users\Desktop\testFolder\fileWithPathAndNewFileName.txt'
foreach ($document in $documentList) {
Rename-Item -Path $document.oldPath -NewName $document.NewFileName
}
您遍历CSV文件中的每一行,并将单元格中的值用作Rename-Item
cmdlet的输入。您需要具有完整的路径,包括“ oldPath”列中文件的文件名和“ NewName”列中的NewName