利用Powershell 实现文件名的批量修改!今天看到论坛上有个人问这个问题:有很多图片要重新命名,因为原来的
利用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,哈哈:
????