使用PowerShell重命名文本列表中的文件

时间:2018-03-27 05:36:56

标签: powershell powershell-v4.0 file-rename

我在这里看到了许多关于如何处理这项任务的不同帖子。我尝试了所有这些都有微小的变化无济于事。每次运行powershell代码时,我仍然会收到相同的错误消息:“无法重命名,因为该文件不存在......”

我只是想从文本文件中的文件名列表中重命名一个文件夹中的一堆文件。

以下是代码的一个版本:

$inputFile1=@()
$filesTochange=@()
$inputFile1 = get-content H:\dev\outputfile.txt
$filesToChange = Get-ChildItem H:\dev\extractedFiles1  | Foreach -Begin 
{$i=0}
-process {Rename-Item $filesToChange[$i] -newName ($inputFile1[$i] -f $i++) 
} 

Here is another version:


$inputFile1=@()    
$filesTochange=@()
$inputFile1 = get-content H:\dev\outputfile.txt             
$filesToChange = Get-ChildItem H:\dev\extractedFiles1 
$i=0
foreach ($fil in $filesToChange) {Rename-Item $fil -NewName 
$inputFile1[$i++]}  

2 个答案:

答案 0 :(得分:0)

不完全确定您的设置或所需的输出是什么,但要给它一个旋转芽。不是最优雅的解决方案,但希望这是你正在寻找的?请注意outputfile.txt中文件名的排序以及获取子项目时文件夹的列出方式。

$BasePath = 'C:\Test'
$FilesToChangeFolderName = 'extractedFiles1'
$filestochange = Get-ChildItem -Path "$BasePath\$FilesToChangeFolderName"

$FileNames = Get-Content "$BasePath\outputfile.txt"

if($filestochange.FullName.Count -eq $FileNames.Count)
{
    for($i=0; $i -lt $FileNames.Count; $i++)
    {
        write-host "Renaming file $($filestochange.Name[$i]) to $($FileNames[$i]+".txt")"
        Rename-Item -Path $filestochange.FullName[$i] -NewName ($FileNames[$i]+".txt")
    }
}

设置 -   outputfile.txt包含:

renametoA
renametoB
renametoC
renametoD
renametoE
renametoF

文件夹结构:

enter image description here

结果:

Renaming file renameto1.txt to renametoA.txt
Renaming file renameto2.txt to renametoB.txt
Renaming file renameto3.txt to renametoC.txt
Renaming file renameto4.txt to renametoD.txt
Renaming file renameto5.txt to renametoE.txt
Renaming file renameto6.txt to renametoF.txt

说明[TLDR]: 下面的脚本采用文本文件输入,其中包含用于重命名每个文本文件的名称。

实施例: outputfile.txt文件包含以下名称:

renametoA
renametoB
renametoC
renametoD
renametoE
renametoF

" extractedFiles1"内有6个文本文件。您可以在图像中看到的文件夹。 enter image description here

该脚本实际上重命名了" extractedFiles1"中的文件。文件夹根据output.txt文件中的名称。 因此它遵循这个逻辑:

Renaming file renameto1.txt to renametoA.txt
Renaming file renameto2.txt to renametoB.txt
Renaming file renameto3.txt to renametoC.txt
Renaming file renameto4.txt to renametoD.txt
Renaming file renameto5.txt to renametoE.txt
Renaming file renameto6.txt to renametoF.txt

因此,在所有脚本运行之后,你的" extractedFiles1"文件夹看起来像这样:

enter image description here

答案 1 :(得分:-1)

此示例进行复制并将文件重命名为csv列表

导入CSV LISTA.csv-标头newFileName | %{复制项-Path archivo_convert.pdf-目标“ $($ _。newfilename).pdf”}