Powershell批量修改文件名

发布时间:2020-07-26编辑:脚本学堂
本文介绍下,使用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:logoutlog.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))
       #求出新的文件名称  www.jb200.com
         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
  #将日志写入日志文件
 }
}