![使用批处理文件重命名文件](https://linux22.com/image/1442773/%E4%BD%BF%E7%94%A8%E6%89%B9%E5%A4%84%E7%90%86%E6%96%87%E4%BB%B6%E9%87%8D%E5%91%BD%E5%90%8D%E6%96%87%E4%BB%B6.png)
我一直在寻找一种方法,只需执行 1 条命令即可每天重命名 150 个文件。当前文件位于同一文件夹 C:\reports 中。文件名不同,我唯一要做的更改是将昨天的日期替换为今天的日期(星期一除外),将星期五的日期替换为星期一。示例 - 文件 1 - Batch030315.xlsx 文件 2 - Input030315.xlsx
明天,文件名将是Batch030415.xlsx&Input030415.xlsx。
任何人若能提供任何帮助都将不胜感激。
谢谢
答案1
你没有明确指出存在哪些模式以及要遵循哪些规则。无论如何,我的JREN.BAT 混合 JScript/批处理实用程序应该能够轻松快速地满足您的需求。JREN.BAT 通过正则表达式替换重命名文件。它是纯脚本,可在 XP 及以上版本的任何 Windows 机器上本地运行。
我假设您想要重命名所有扩展名前紧接着有 6 位数字的 .xlsx 文件。如果是这种情况,那么旧日期实际上并不重要 - 您只需重命名所有符合该模式的文件以使用今天的日期即可:
@call jren "\d{6}(?=\.xlsx$)" "ts({fmt:'{mm}{dd}{yy}'})" /i /j
如果有符合模式的文件,但由于包含错误的日期而不应重命名,那么您只需提供目标旧日期作为参数并将其替换为旧的 6 位数字掩码:
@call jren "%1(?=\.xlsx$)" "ts({fmt:'{mm}{dd}{yy}'})" /i /j
如果上述脚本名为 fixDate.bat,那么您将fixDate 030315
从命令行使用。
如果你想计算旧日期,那么你可以输入我的getTimestamp.bat 混合实用程序并使用以下批处理脚本。
@echo off
setlocal
call getTimestamp /f "{w}" /r dayOfWeek
set "offset=-1"
if %dayOfWeek% equ 1 then set "offset=-3"
call getTimestamp /od %offset% /f "{mm}{dd}{yy}" /r oldDay
call jren "%oldDay%(?=\.xlsx$)" "ts({fmt:'{mm}{dd}{yy}'})" /i /j
无论您的具体要求是什么,您都应该能够使用这两个实用程序来满足您的需求。 这两个实用程序都非常灵活,具有许多选项。 可以使用以下命令从命令行获取帮助:
jren /?
getTimestamp /?
您可能希望通过 MORE 传输帮助,这样您就可以在每行滚动出屏幕之前阅读它们。我的控制台配置为具有较大的缓冲区,这样我就可以滚动查看先前的输出行,因此我不需要 MORE。
jren /? | more
getTimestamp /? | more