利用Powershell 实现文件名的批量修改!

今天看到论坛上有个人问这个问题:


有很多图片要重新命名,因为原来的位数不够,要增加到6位,我的文件名命名的规则是前面两个英文字母后面是4位和5位的数字,格式(AA0001.jpg,AA10001.jgp).现在要改为:(AA000001.Jpg,AA010001.Jpg).
规则就是如果文件名是4数字的在英文字母后面加2个"0",如果是5位在英文字母后面加一个"0",后面的保持不变.
前面的英文字母是不一样的.规则:AA,AB,AC.......ZX,AY,ZZ.


我对代码做了一些扩展,只要最终是8位的前缀都可以实现相应的规则更名,代码如下:


param
#定义参数
(
[string] $picdirectory="d:\temp\",
#定义查询文件的路径
[string] $outputlog="d:\log\outlog.log"
#定义日志写入路径
)
$filenames=Get-ChildItem -Path $picdirectory -Include *.jpg -Recurse
#查询目录下JPG文件
foreach($filename in $filenames)
#根据查询的文件进行轮询
{
    $filelength=$filename.name.length
   # 求出文件名长度
    $addstring=$filename.name.substring(0,2)
  #定义文件名初始值
        for($i=$filelength;$i -lt 12;$i++)
   #求出文件名中需要加入多少个0,根据长度进行轮询
        {
           $addstring=$addstring+"0"
  # 在字符串后面加入0
        }
        $newfilename=$addstring+$filename.name.substring(2,($filename.name.length-2))
       #求出新的文件名称  
         Rename-Item -Path $filename.fullname -NewName $newfilename
      #将文件更名为新的名称
 if ($?)
 {
 $writestring="文件"+$filename.name+"在"+(Get-Date).tostring("yyyyMMdd-HHmm")+"分修改为"+$newfilename
 #得出需要写入日志的内容
 $writestring|Out-File -Append -FilePath $outputlog -Encoding unicode
  #将日志写入日志文件中
 }
}
 
最终结果我们来看看,贡献几张我和儿子的PP,哈哈:



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

雾岛心情

欢迎你的打赏

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值