powershell - 使用括号中的索引重命名文件

标签 powershell file-rename

我想编写一个简短的 powershell 脚本来重命名文件,例如:

abc(1), abc(2), .., abc(10), ..,  abc(123), .. 

abc(001), abc(002), .., abc(010), .., abc(123), ..

有什么想法吗? :)

最佳答案

试试这个:

Get-ChildItem abc* | Where {$_ -match 'abc\((\d+)\)'} | 
 Foreach {$num = [int]$matches[1]; Rename-Item $_ ("abc({0:000})" -f $num) -wh }

管道的 Where 阶段正在做两件事。首先,只传递与指定模式匹配的文件名。其次,它使用捕获组来获取位于 $matches[1] 中的名称的数字部分。

Foreach 阶段将脚本应用于传递给它的每个项目,由 $_ 表示。它做的第一件事是获取旧文件名的“数字”部分。然后它使用 Rename-Item(PowerShell 的重命名命令)从 $_ 表示的旧名称重命名为使用格式化字符串 "abc({0:000})"-f $num< 计算的新名称。在这种情况下,格式化指令进入 {},其中 0 表示在 -f 之后指定的值的位置。 :000 是一个格式化指令,最多显示三个前导零的数字。最后,-wh-WhatIf 的缩写,它指示具有潜在破坏性的操作(如 Rename-Item)以显示它会做什么,而无需实际执行任何操作。一旦您对命令正常工作感到满意,请删除 -wh 并再次运行它。

关于powershell - 使用括号中的索引重命名文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2953782/

相关文章:

powershell - 在后台作业中调用命令

python - 如何使用 Python 重命名文件

powershell - 如何找出当前安装的 webdeploy/msdeploy 版本?

c++ - 为什么我的重命名文件不起作用?

windows - 批量将扩展名重命名为小写

java - ftpClient.rename 函数在 FTPUtility 类中不起作用 - 使用 apache.commons.net

PHP zip 提取和重命名

powershell - 删除旧用户配置文件的简单脚本

PowerShell:1234 和 (1234) 有什么区别?

windows - Pester 5 变量作用域问题 - BeforeDiscovery/It