Windows PowerShell批量替换文件名

Q:

  假如文件夹有批量相似的文件名,如果文件名不符合需求了,要怎么改呢,文档可以“Ctrl + H”一键替换字符,系统文件名可不支持“Ctrl + H”一键替换字符,动手能力强的已经一个个手动在改了/滑稽,你是原始人嘛

如图:

 A:

  可以通过Windows自带的PowerShell写脚本来实现批量修改文件名

下面来实现一下

一、新建记事本,保存为 ".ps1"文件格式

a. 打开文件写入下面这段内容

 注意:$Path的路径建议写为二级目录,比如"E:\Test\test",而二级目录的 test 文件夹下就放着你需要改名的文件。如果路径是"E:\Test",Test 目录下有其它子目录,且子目录中也有满足脚本的 $Filter 和 $oldtext 规则的文件,那么脚本会将子目录里满足规则的文件名也一并改了,所以建议把需要改名称的文件放到一个文件夹里,将这个文件夹放在二级目录下

$Path = ''   # 路径:要改名称的文件夹路径
$Filter = ''   # 过滤器:要改名称的文件格式
$newtext = ''   # 新字符:符合需求的字符
$oldtext = ''   # 旧字符:现有的、不符合需求的字符

# 下面这段命令照抄即可

ls $Path -Include $Filter -Recurse | ForEach-Object{Rename-Item $_.Fullname $_.Fullname.Replace($oldtext,$newtext)}

b. 保存,右键PowerShell运行,不出意外你应该看见一个窗口一闪而过,文件名没有发生任何改变

c. 为什么呢?因为PowerShell的默认执行策略是 Restricted,这个策略不允许任何不被信任的脚本运行,所以脚本是执行失败了

二、在Windows里搜索 Windows PowerShell ISE 并以管理员身份运行

a. 以命令的形式执行脚本可以看到报错信息

# 使用绝对路径或相对路径执行脚本

$ .\script_path\**.ps1

b. 输入以下命令:

# 查看当前设置的执行策略,可以看到当前策略为 Restricted

$ get-executionpolicy

# 使用下面的命令更改策略为 remotesigned

$ set-executionpolicy remotesigned

# 再次查看当前设置的执行策略,可以看到当前策略为 Remotesigned

c. 使用命令执行 .ps1 脚本

# 使用绝对路径或相对路径执行脚本

$ .\script_path\**.ps1

# 或者将命令 Copy 在终端中执行

$ ls "Path" -Include "Filter" -Recurse |ForEach-Object{Rename-Item $_.FullName $_.FullName.Replace("oldtext","newtext")}

 d. 见证奇迹

三、收尾工作

a. 将PowerShell的执行策略改回 Restricted

# 将PowerShell的执行策略改回默认的 Restricted

$ set-executionpolicy Restricted

# 查看当前设置的执行策略,可以看到当前策略为 Restricted

$ get-executionpolicy

 

End...

 
posted @ 2020-10-17 22:00  Brother_BigCousin  阅读(569)  评论(0编辑  收藏  举报