如何在 Powershell 中快速重命名数千个文件?
How can I quickly rename thousands of files in Powershell?
有什么快速方法可以重命名单个目录中的数千个文件?我需要用文件名中特定的最后 3 个字符重命名文件。例如 "TEST-AB.CSV" 应该重命名为 "TEST.CD.CSV"。所以所有名称中最后 3 个字符如“-AB”的文件都替换为“.CD”但是如果“-AB”字符串不在文件名的末尾,则不应重命名文件。
感谢您的帮助。
约翰
这里有一个方法:
$path = "c:\temp"
$counter = 0
Get-ChildItem $path | ? {$_.basename.EndsWith("-AB")}|%{$counter++;rename-item $_.fullname (($_.basename -replace '(.*)(-AB)$','.CB')+$_.extension)}
$counter
编辑
添加了一个计数器。
在 batch/cmd(即不是 PowerShell)中,您可以这样做:
ren *-AB.* *.CD.*
但是如果你需要使用 PowerShell,Micky 的回答就可以了。
Edit 上述语法似乎仅限于 not 引入“.”。进入重命名。所以:
ren *-AB.* *-CD.*
有效,但是:
ren *-AB.* *.CD.*
不会。我建议采用 Micky 的回答
有什么快速方法可以重命名单个目录中的数千个文件?我需要用文件名中特定的最后 3 个字符重命名文件。例如 "TEST-AB.CSV" 应该重命名为 "TEST.CD.CSV"。所以所有名称中最后 3 个字符如“-AB”的文件都替换为“.CD”但是如果“-AB”字符串不在文件名的末尾,则不应重命名文件。
感谢您的帮助。
约翰
这里有一个方法:
$path = "c:\temp"
$counter = 0
Get-ChildItem $path | ? {$_.basename.EndsWith("-AB")}|%{$counter++;rename-item $_.fullname (($_.basename -replace '(.*)(-AB)$','.CB')+$_.extension)}
$counter
编辑
添加了一个计数器。
在 batch/cmd(即不是 PowerShell)中,您可以这样做:
ren *-AB.* *.CD.*
但是如果你需要使用 PowerShell,Micky 的回答就可以了。
Edit 上述语法似乎仅限于 not 引入“.”。进入重命名。所以:
ren *-AB.* *-CD.*
有效,但是:
ren *-AB.* *.CD.*
不会。我建议采用 Micky 的回答