bat批处理修改文件夹下文件名字
有时候我们经常会遇到需要批量处理一些文本或者文件名称的问题,批量文本的处理可以使用notepad++ 里面的列编辑,或者批量替换字符串即可。假如有这样一个要求,某个文件夹下有多个文件,他们文件名字组成:有不同的前缀+时间(如下图),我们经常需要替换文件名中的日期以达到业务需求。
bat批处理修改文件夹下文件名字
业务场景
有时候我们经常会遇到需要批量处理一些文本或者文件名称的问题,批量文本的处理可以使用notepad++ 里面的列编辑,或者批量替换字符串即可。假如有这样一个要求,某个文件夹下有多个文件,他们文件名字组成:有不同的前缀+时间(如下图),我们经常需要替换文件名中的日期以达到业务需求。
解决办法
①,一个一个重命名
费时费力,如果文件达到一个数量级,效率低下,容易出错。
②,使用Excel +bat命令
原理 就是通过Excel 获取 xx 文件夹 下文件名字 然后 通过 ren 命令 重命名 (不明白,自行问度娘)
③,用第三方工具
菲菲更名宝贝之得意非凡,缤纷批量修改文件名,拖把更名器 等,功能都比较强大,大家可以自行下载研究,软件的缺点就是占用空间,打开麻烦等。。。
④,bat批处理
如果大家对bat比较熟悉,建议手动写一个bat批处理,这样比较有成就感,灵活性高。
@echo off
setlocal enabledelayexpansion
set /p oldDate= 请输入原字符串:
set /p targetDate= 请输入替换的字符串:
echo 要替换成的字符串为: %targetDate%
for /f "token=*" %%a in ('dir /b /a-d *%oldDate%*') do (
set "oldName=%%a"
set "newName=!oldName:%oldDate%=%targetDate%!"
ren "!oldName!" "!newName!"
)
echo 修改完成!
pause
注意: bat文件编码格式请保存为gb2312 防止控制台中文乱码
这段批处理脚本的作用是在当前目录下将所有包含指定子字符串 oldDate
的文件名替换为 targetDate
。
首先使用 set /p
命令获取用户输入的原字符串和要替换成的字符串,分别存储在 oldDate
和 targetDate
变量中。由于要在循环中进行变量替换,因此启用了 enabledelayexpansion
选项。
接着,使用 for
命令遍历当前目录下所有不是目录的文件,并将文件名存储在 %%a
变量中。通过 set
命令将文件名赋值给 oldName
变量,并使用 !
符号进行延迟变量替换,即将 %oldDate%
替换为 %targetDate%
,并将结果赋值给 newName
变量。
最后,使用 ren
命令将文件名从 oldName
修改为 newName
,这样就完成了批量替换操作。
需要注意的是,在执行该脚本之前,请确保所在目录下没有相同名称的文件,否则可能会导致文件名冲突。另外,由于该脚本只替换文件名中的指定子字符串,不对文件内容进行修改,因此请谨慎使用。
称的文件,否则可能会导致文件名冲突。另外,由于该脚本只替换文件名中的指定子字符串,不对文件内容进行修改,因此请谨慎使用。
更多推荐
所有评论(0)