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

Renaming Specific Files in various folders with Import-Csv

我正在尝试重命名位于多个文件夹中的一堆文件。文件名不是唯一的,因为它们存在于多个目录中。因此,我想根据路径获取所有特定文件,然后使用 Rename-Item cmdlet 使它们独一无二。

我正在使用 Import-Csv cmdlet,因为我在文本文件中有路径和新文件名(headers 分别是 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 object。任何帮助将非常感激。如果这看起来有些微不足道,我提前道歉,不幸的是我与我的 Powershell 不一致。

您的代码有点混乱。 ;-) ... 如果您有 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"

列中的新名称