搜索并添加文件名中的文本

时间:2014-06-24 11:50:53

标签: batch-file pdf cmd

我需要一个批处理文件来搜索短语“Ch_XX”并在PDF文件中添加一个“Ch_XX_Pg”。

我的PDF文件名看起来像......

01_Vig12345_ch01_001-020.pdf
02_Vig12345_ch02_021-046.pdf
03_Vig12345_ch03_047-078.pdf

对于这些文件,输出应该是......

01_Vig12345_ch01_pg001-020.pdf
02_Vig12345_ch02_pg021-046.pdf
03_Vig12345_ch03_pg047-078.pdf

如果文件名不包含“CH”,则不应添加此“pg”。

1 个答案:

答案 0 :(得分:1)

@echo off
setlocal disableDelayedExpansion
for %%F in (*_ch??_???-???.pdf) do (
  set "name=%%F"
  setlocal enableDelayedExpansion
  ren "!name!" "!name:~0,-11!pg!name:~-11!"
  endlocal
)

在循环内打开和关闭延迟扩展,以保护文件名中可能存在的任何!(不太可能,但可能)。

重命名的文件与FOR循环中的文件掩码不匹配,因此不存在重命名文件两次的风险。

但是如果给出新名称可以匹配FOR文件掩码的情况,那么单次运行可以将文件重命名两次。在这种情况下,FOR循环必须更改为FOR / F处理DIR / B命令。