PowerShell 脚本用于更改文件夹中所有文件的名称

PowerShell 脚本用于更改文件夹中所有文件的名称

我想编写一个脚本,将目录中所有文件的名称更改为统一的名称。

示例:现有文件:awff.jpg、forp.jpg、ddd.jpg、www.jpg

脚本后的文件:file1、file2、file3、file4.jpg


因此,如果我有一个充满文件的目录,我想运行该脚本,我假设它会将目录的内容拉入数组,然后通过循环进行迭代,将新名称应用到其末尾,并将迭代器附加到其末尾。

PowerShell 有这个功能吗?

这让我很接近,但我只想抓住所有文件,并按迭代顺序重命名它们。

Get-ChildItem -Filter “*current*” -Recurse | Rename-Item -NewName {$_.name -replace ‘current’,’old’ }

或这个:

Get-ChildItem -LiteralPath 'C:\temp' -Recurse | Where-Object {-Not $_.PsIscontainer -AND $_.name -match "."} | 
foreach {
$New=$_.BaseName.Replace("*","File")+$_.Extension
Rename-Item -path $_.Fullname -newname $New -passthru
}

答案1

尽管 PowerShell 本身可以理解印刷引号,但
由于编码的边缘情况问题,我还是会避免使用它们。

您的描述和代码不匹配,您是否要使用前缀file和计数器(递归)重命名所有 jpg 文件,还是仅重命名名称的一部分?

$Counter = 1
Get-ChildItem -Filter "*.jpg" -Recurse | 
    Rename-Item -NewName {'file{0:D3}.jpg' -f $script:Counter++} -WhatIf

在文件夹中:

> Get-ChildItem *.jpg -Name
awff.jpg
ddd.jpg
forp.jpg
www.jpg

上述脚本将产生结果(在我的德语区域设置窗口中):

WhatIf: Ausführen des Vorgangs "Datei umbenennen" für das Ziel 
"Element: A:\awff.jpg Ziel: A:\file001.jpg".
WhatIf: Ausführen des Vorgangs "Datei umbenennen" für das Ziel 
"Element: A:\ddd.jpg Ziel: A:\file002.jpg".
WhatIf: Ausführen des Vorgangs "Datei umbenennen" für das Ziel 
"Element: A:\forp.jpg Ziel: A:\file003.jpg".
WhatIf: Ausführen des Vorgangs "Datei umbenennen" für das Ziel 
"Element: A:\www.jpg Ziel: A:\file004.jpg".

如果输出结果正常,删除-WhatIf

相关内容