这是我的文件MY_APP_CON_123_yyyymmdd.hhmmss.txt,其中“yyyymmdd.hhmmss”是可变数据。我想将其重命名为MY_APP_CON_0123_yyyymmdd.hhmmss.txt(零前面的123)。当我使用如下所示的ren命令时,第一个y从文件名中消失。
REN MY_APP_CON_123_* MY_APP_CON_0123_*
任何解决方案?
答案 0 :(得分:1)
这是一个纯批量解决方案。
@echo off
for %%F in (MY_APP_CON_123_*) do @set "name=%%F"&call ren "%%name%%" "%%name:*MY_APP_CON_=MY_APP_CON_0%%"
或者,延迟扩张:
@echo off
setlocal enableDelayedExpansion
for %%F in (MY_APP_CON_123_*) do @set "name=%%F"&ren "!name!" "!name:*MY_APP_CON_=MY_APP_CON_0!"
但是我会使用我的JREN.BAT regular expression renaming utility - 一个混合的JScript /批处理脚本,它可以在XP以后的任何Windows机器上本机运行。
call jren "^MY_APP_CON_123_" "MY_APP_CON_0123_" /i /fm *.txt
答案 1 :(得分:0)
没有回答,但解释了为什么您的重命名不起作用:
cmd.exe / command.com的通配符重命名是基于位置的,例如
filename: abc123.txt
command: ren abc*.txt abd1*.txt
将会:
abc123.txt - original name
||||**.txt
abd1**.txt - rename pattern
----------
abcd23.txt - new filename
https://superuser.com/questions/475874/how-does-the-windows-rename-command-interpret-wildcards
通配符重命名,您想要更改文件名的某些部分,而新部件的长度与原始部件的长度不同会非常毛茸茸。
答案 2 :(得分:-1)
for %%a in (MY_APP_CON_123_**) do set "name=%%a" & ren %name% %name:123=0123%
这对我有用