写在前面
在日常办公中,批量修改照片/视频的文件名是一件让很多人头疼却又不得不面对的事情。我就经常会遇到下载的视频文件名中带有广告等信息的情况。
今天给大家介绍一种简单易懂的方法用来批量修改文件名,用到的工具是Windows 10
系统自带的powershell
(鉴于其跨平台的特性,Mac、Linux用户也可以使用powershell
)。
具体步骤
- 新建文本文档,复制如下代码,并做修改
ls "D:\Desktop\test" -i *.txt -r | foreach {
ren $_.FullName $_.FullName.Replace("oldname", "newname")
}
D:\Desktop\test 修改为 所要更改的文件夹路径
oldname 修改为 原文件包含的文件名
newname 修改为 要替换的新文件名
- 在桌面按住
Shift
并点击右键—<在此处打开powershell
窗口>,粘贴上述修改后的命令,回车即可完成文件名的修改
命令详解
命令&方法 | 参数 | 解释 |
---|---|---|
ls | 读取路径下的所有文件信息 | |
-i | 为单词Include的首字母,意为包含的内容,可使用通配符,后加参数*.txt意为查找所有后缀名为txt的文件,可自由替换 | |
-r | 为单词递归Recurse的首字母,意为递归查找 | |
foreach | 可类比for循环语句,意为对循环的每一个元素进行操作,后加操作内容 | |
$_ | 用于读取每一个由foreach得到的元素,本例中返回文件的详细信息(状态、大小、路径) | |
.FullName | 该方法返回文件的完整路径 | |
ren | 为单词rename的前三个字母,后加文件的原始名称及修改后的名称 | |
.Replace | 该方法用于进行字符串的替换操作,后加参数:待替换的内容,替换后的内容 |
注意事项
- 以上命令&参数为了简洁可读,均使用别名(Alias)。
powershell
命令不区分大小写,首字母大写为提高可读性。- 待替换的文件名不能与路径中出现的内容相同,否则会报错,如下例路径中的Desktop和test,里面的字母若单独出现在待替换的内容中,则会因路径首先被修改而导致找不到文件。
- 诸如中文符号(,),《,》等可能会因为编码问题导致修改不能成功,目前仅已知可以通过字符串分割的操作进行处理,欢迎知道的朋友在下方评论,十分感谢!
- 对于不同的文件名,有些可能使用替换的方法会比较繁琐,这时候就要具体问题具体分析,欢迎大家一起学习。
简单示例
为方便大家理解,下面展示一个例子作简要说明:
如图1,从网络下载了若干视频(保存在D:\Desktop\test文件夹下),但每一个文件名前面有很多的广告内容:
现利用以上所给方法进行文件名的批量修改
执行如下命令:
ls "D:\Desktop\test" -i *.txt -r | foreach {
ren $_.FullName
$_.FullName.Replace("某某某网站荣誉出品--高清无水印--【微信公众号《XXX》获取更多资源】", "")
}
所得结果如图2:
总结
powershell
目前来看还是一款十分小众的shell工具,但随着其在更多领域(网络安全,系统管理等)上的应用,以及其开源特性,一定会让更多人了解并熟悉这个十分Power的工具。本人最近正在学习powershell
,会陆续更新一些相关的博客,欢迎大家支持,指正。