使用Import-Csv重命名各个文件夹中的特定文件

时间:2019-11-23 04:45:07

标签: powershell multidimensional-array rename-item-cmdlet

我正在尝试重命名多个文件夹中的一堆文件。文件名不是唯一的,因为它们位于多个目录中。因此,我想根据路径获取所有特定文件,然后使用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不一致。

1 个答案:

答案 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