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 命令获取用户输入的原字符串和要替换成的字符串,分别存储在 oldDatetargetDate 变量中。由于要在循环中进行变量替换,因此启用了 enabledelayexpansion 选项。

接着,使用 for 命令遍历当前目录下所有不是目录的文件,并将文件名存储在 %%a 变量中。通过 set 命令将文件名赋值给 oldName 变量,并使用 ! 符号进行延迟变量替换,即将 %oldDate% 替换为 %targetDate%,并将结果赋值给 newName 变量。

最后,使用 ren 命令将文件名从 oldName 修改为 newName,这样就完成了批量替换操作。

需要注意的是,在执行该脚本之前,请确保所在目录下没有相同名称的文件,否则可能会导致文件名冲突。另外,由于该脚本只替换文件名中的指定子字符串,不对文件内容进行修改,因此请谨慎使用。

称的文件,否则可能会导致文件名冲突。另外,由于该脚本只替换文件名中的指定子字符串,不对文件内容进行修改,因此请谨慎使用。

Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐