在一个目录中,我有一些.jpg
文件。
文件名是从
1.jpg
到 开头的整数150.jpg
。我想
1
从每个文件名中减去。因此文件名将
0.jpg
是149.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 资源管理器一样按文件名排序?回答罗曼·库兹明用于自然排序。