首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 其他教程 > 系统运维 >

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

2013-10-18 
利用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,哈哈:利用Powershell 实现文件名的批量批改
????

热点排行