PowerShell批量重命名

关键字: PowerShell, 重命名, 遍历路径

最近遇到个小问题, windows的文件名和路径名里带特殊字符"•"导致文件读取出错.

根本原因在于一些软件在处理的时候, 不认识这个"•".
那么我们的思路是, 把"•"改成"_"之类的可以识别的字符不就解决了?

???, 就这么简单?

Yes, 没错, 就是这么简单.
但是考虑到重命名的文件数量可能比较庞大, 这么简单枯燥还"巨量"的活当然交给电脑去解决啊, 只需要双击就搞定, 妈妈再也不用担心我鼠标手和颈椎病了.

涉及到"•"的话, 很多脚本语言, vbs, bat都是不能很友好的处理的.
这里我选择的是powershell, 从win7开始系统都支持哦, 也不需要担心环境问题.

具体步骤:

  1. 遍历路径下面的每一个元素(包括: 文件和文件夹)
  2. 判断名字中是否含有"•"
  3. 把名字中的"•"全部改成"_"
  4. ...已经解决拉, 快去干活吧你

代码参考:

#以脚本文件所在的目录为目标目录
$CurrentyDir = Split-Path -Parent $MyInvocation.MyCommand.Definition;
#echo $CurrentyDir

#遍历目录中所有文件
Get-ChildItem $CurrentyDir | ForEach-Object -Process{
    #判断名字中是否含有"•"
    if ($_.name.Contains("•")) {
        #把名字中的"•"全部替换掉
        $newName = $_.name -replace "•", "_";

        $fulOldPath = $CurrentyDir + "\" +$_.name;
        $fulNewPath = $CurrentyDir + "\" +$newName;

        echo $fulOldPath;
        echo $fulNewPath;

        #重命名
        Rename-Item -Path $fulOldPath -NewName $fulNewPath;
    }
}

#友情提醒下已经完成了
$ws = New-Object -ComObject WScript.Shell  
$wsr = $ws.popup("处理完成",0,"提示",1 + 64)

你可能感兴趣的:(PowerShell批量重命名)