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

Ull*_*las 6 windows powershell

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

  • 文件名是从1.jpgto开始的整数150.jpg

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

  • 因此,文件名会0.jpg149.jpg

我知道如何使用PowerShell.

我怎样才能做到这一点Powershell

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

Powershell 脚本

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

和:

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

Dav*_*ill 10

文件名应该像 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++ }
Run Code Online (Sandbox Code Playgroud)

笔记:

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

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

例子:

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>
Run Code Online (Sandbox Code Playgroud)

来源:使用 Windows PowerShell 重命名批处理文件。脚本已经过调整以符合问题的要求。

来源:如何以与 Windows 资源管理器相同的方式按文件名排序?Roman Kuzmin回答自然排序。