想要通过Windows批处理文件脚本重命名文件

时间:2015-05-06 19:03:05

标签: windows batch-file batch-rename

这是我的文件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_*

任何解决方案?

3 个答案:

答案 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%

这对我有用