Windows批处理文件重命名命令求助
Windows批处理文件重命名命令求助
嘿,我看你在给Windows下的日志文件重命名时遇到麻烦了,原来的REN命令写法确实有问题,我来帮你梳理下正确的操作方式:
首先得指出你之前命令的错误:REN命令的正确语法是REN [原文件匹配规则] [新文件名格式],你写了两个REN,这肯定没法生效的,而且通配符的匹配逻辑也没写对。
单个文件重命名
如果你只需要处理这一个特定文件,直接指定完整的原文件名和目标文件名就好,简单直接:
REN ORA_GL_2023-09-19_12-36-47.TXT ORA_GL_2023-09.TXT
批量处理同格式文件
如果有一堆类似ORA_GL_YYYY-MM-DD_HH-MM-SS.TXT格式的文件,想要批量改成ORA_GL_YYYY-MM.TXT,有两种靠谱的方法:
方法一:利用通配符替换
Windows的REN命令支持有限的通配符匹配替换,你可以这样写:
REN ORA_GL_????-??-??_??-??-??.TXT ORA_GL_????-??.TXT
这里的????-??会匹配原文件名里的2023-09部分,后面的-??_??-??-??会被自动忽略替换,刚好得到你想要的文件名格式。
方法二:用批处理变量截取(更灵活)
如果以后文件名格式有变化,这种方法扩展性更强,通过截取文件名的固定长度来实现:
@echo off setlocal enabledelayedexpansion for %%f in (ORA_GL_*.TXT) do ( :: 获取不带扩展名的文件名 set "raw_name=%%~nf" :: 截取前14个字符(对应ORA_GL_YYYY-MM的长度),再加上扩展名 ren "%%f" "!raw_name:~0,14!.TXT" ) endlocal
解释下关键部分:
setlocal enabledelayedexpansion:开启延迟变量扩展,这样在循环里能正确获取每次循环的文件名变量%%~nf:提取当前文件的文件名(不含.TXT扩展名)!raw_name:~0,14!:截取文件名的前14个字符,刚好对应ORA_GL_2023-09的长度
试试上面的方法,应该就能顺利完成重命名了!
备注:内容来源于stack exchange,提问作者user7571572
相关产品推荐
相关产品推荐

