使用Powershell查找字符并重命名文件名

时间:2012-11-30 14:56:26

标签: powershell file-rename

我在这种命名约定的目录中有大量文件:“1050_14447_Letter Extension.pdf”等。我需要删除第二个下划线之前的所有字符(包括第二个下划线)。所以新的文件名是“Letter Extension.pdf”。如何相应地重复单个目录重命名?

5 个答案:

答案 0 :(得分:6)

以下是重命名当前目录中所有pdf文件的示例,从文件名中删除所有前导数字或下划线:

Get-ChildItem -Filter *.pdf | Rename-Item -NewName {$_.Name -replace '^[0-9_]+'}

答案 1 :(得分:1)

这是另一种不依赖于正则表达式但在文件路径中没有下划线的方法:

Get-ChildItem 'C:\path2files' | %{
    Rename-Item $_.fullname $_.Name.Split("_")[2]
    }

答案 2 :(得分:0)

给出像“1050_14447_Letter Extension.pdf”这样的字符串,这是一种方法:

$foo = "1050_14447_Letter Extension.pdf"
$foo -replace '^.*_.*_(.*)$', '$1'

答案 3 :(得分:0)

这将处理文件名中的任意数量的下划线(忽略路径),并在生成新名称时跳过所有内容,包括最后一个下划线: -

Get-ChildItem 'C:\somedir' -Filter *.pdf |`
%{Rename-Item $_.Fullname ($_.Name.Split("_")|`
select -last 1)}

您可以使用rename-item命令上的-whatif开关进行测试,例如

gci 'R:\TECH' -Filter *.pdf|`
%{rename-item -whatif $_.Fullname ($_.Name.Split("_")|`
select -last 1)}

返回:

如果:在Target上执行“重命名文件”操作“Item:R:\ TECH \ 38415_JOBS121121155535240.pdf Destin ation:R:\ TECH \ JOBS121121155535240.pdf“。 如果:在目标“项目:R:\ TECH \ CHG38415_JOB_121112153717550.pdf Des上执行”重命名文件“操作 tination:R:\ TECH \ 121112153717550.pdf“。 如果:在Target上执行操作“重命名文件”项目:R:\ TECH \ CHG38415_PREH_121113152548740.pdf De stination:R:\ TECH \ 121113152548740.pdf“。 如果:在Target上执行操作“重命名文件”项目:R:\ TECH \ CHG38415_PREI_121113152600640.pdf De stination:R:\ TECH \ 121113152600640.pdf“。 如果:在Target上执行操作“重命名文件”项目:R:\ TECH \ MCPTEST121125121201390.pdf Destinati on:R:\ TECH \ MCPTEST121125121201390.pdf“。 如果:在Target上执行操作“重命名文件”项目:R:\ TECH \ PREHAND_38415_121121154127000.pdf De stination:R:\ TECH \ 121121154127000.pdf“。 如果:在目标“项目:R:\ TECH \ PREIMP_38415_121121154140630.pdf Des上执行”重命名文件“操作 tination:R:\ TECH \ 121121154140630.pdf“。

答案 4 :(得分:0)

以下是使用StringSolver自动工具的另一种方法。安装后,mv命令会使用半自动决策程序进行扩充。

您首先要执行以下操作:

mv "1050_14447_Letter Extension.pdf" "Letter Extension.pdf"

然后你会问什么是广义转换:

mv --explain

它会告诉你像``

这样的东西
  

从第一个用'分隔的单词开始连接文件名及其扩展名。'

这还不是你想要的。你需要的是给出另一个例子,例如:

mv --explain "25771_144_ 17Your file_name.pdf" " 17Your file_name.pdf"
  

在第二个' _'之后开始的文件名+常量字符串'。' +扩展名

现在你可以这样做:

mv

它将执行转型。

免责声明:我是这项工作的合着者,用于学术目的。其他示例可在youtube上找到。