0

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

4

1 回答 1

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-Itemcmdlet 的输入。您需要完整的路径,包括“oldPath”列中文件的文件名和“NewName”列中的NewName

于 2019-11-23T05:07:52.263 回答