使用 Powershell 重命名 Windows 文件夹中的文件

使用 Powershell 重命名 Windows 文件夹中的文件

在一个目录中,我有一些.jpg文件。

  • 文件名是从1.jpg到 开头的整数150.jpg

  • 我想1从每个文件名中减去。

  • 因此文件名将0.jpg149.jpg

我知道如何使用 替换文件名中的某些字符PowerShell

我怎样才能实现这一目标Powershell

以下是Powershell我尝试过的脚本。

Powershell 脚本

gci *.jpg | rename-item -newname {[integer]($_.name -replace ".JPG", "")-1}

和:

gci *.JPG | rename-item -newname { (([convert]::ToInt32($_.name, 10)) - 1) + ".JPG"}

答案1

文件名应类似于 0.jpg 到 149.jpg

使用以下 PowerShell 命令:

dir *.jpg | Sort-Object { [regex]::Replace($_.Name, '\d+', { $args[0].Value.PadLeft(20) }) } | foreach-object -begin { $count=0 } -process { rename-item $_ -NewName "$count.jpg"; $count++ }

笔记:

  • $count=0从 开始 计数0
  • $_|表示通过管道从命令传递给 rename-item 命令的每个项目dir
  • foreach-object$count允许您在循环遍历目录中的每个文件(匹配)之前设置一个变量( ) *.jpg,然后rename-item对每个匹配项执行一个操作()。
  • 为了dir按“自然”排序顺序对输出进行排序,我们使用:

    Sort-Object { [regex]::Replace($_.Name, '\d+', { args[0].Value.PadLeft(20) }) }
    

例子:

PS F:\test> dir *.jpg

    Directory: F:\test

Mode                LastWriteTime     Length Name
----                -------------     ------ ----
-a---        01/04/2016     19:39         54 1.jpg
-a---        01/04/2016     19:39         54 10.jpg
-a---        01/04/2016     19:39         52 11.jpg
-a---        01/04/2016     19:39         54 2.jpg
-a---        01/04/2016     19:39         54 3.jpg
-a---        01/04/2016     19:35         52 4.jpg
-a---        01/04/2016     19:35         52 5.jpg
-a---        01/04/2016     19:39         51 6.jpg
-a---        01/04/2016     19:39         51 7.jpg
-a---        01/04/2016     19:39         54 8.jpg
-a---        01/04/2016     19:39         52 9.jpg


PS F:\test> dir *.jpg | Sort-Object { [regex]::Replace($_.Name, '\d+', { $args[0].Value.PadLeft(20) }) } | foreach-object -begin { $count=0 } -process { rename-item $_ -NewName "$count.jpg"; $count++}

PS F:\test> dir *.jpg

    Directory: F:\test


Mode                LastWriteTime     Length Name
----                -------------     ------ ----
-a---        01/04/2016     19:39         54 0.jpg
-a---        01/04/2016     19:39         54 1.jpg
-a---        01/04/2016     19:39         52 10.jpg
-a---        01/04/2016     19:39         54 2.jpg
-a---        01/04/2016     19:35         52 3.jpg
-a---        01/04/2016     19:35         52 4.jpg
-a---        01/04/2016     19:39         51 5.jpg
-a---        01/04/2016     19:39         51 6.jpg
-a---        01/04/2016     19:39         54 7.jpg
-a---        01/04/2016     19:39         52 8.jpg
-a---        01/04/2016     19:39         54 9.jpg

PS F:\test>

来源:使用 Windows PowerShell 批量重命名文件。脚本已进行调整以满足问题的要求。

来源:如何像 Windows 资源管理器一样按文件名排序?回答罗曼·库兹明用于自然排序。

相关内容