batch file在文件夹中为文件夹中的多个文件插入字符

我有一系列有这样的名字的文件:

CHART_LOAN_6516_20130502.PDF CHART_LOAN_2158_20130502.PDF CHART_LOAN_78986_20130502.PDF 

每个文件始终以CHART_LOAN_开头,但下一个数字是不同的,最后一个数字是它创build的date。

我想在每个文件的CHART_LOAN_number_之后插入一个0_。 如下所列:

 CHART_LOAN_6516_0_20130502.PDF CHART_LOAN_2158_0_20130502.PDF CHART_LOAN_78986_0_20130502.PDF 

通过我的研究,我已经发现插入的字符,但不是当每个文件的名称正在改变。

 @echo off SETLOCAL ENABLEDELAYEDEXPANSION SET old=CHART_LOAN_ SET new=CHART_LOAN_0_ for /f "tokens=*" %%f in ('dir /b *.jpg') do ( SET newname=%%f SET newname=!newname:%old%=%new%! move "%%f" "!newname!" ) 

上面的代码将文件的静态部分更改为我想要的,但我不知道如何修改代码来补偿更改的贷款数量。

尝试这个:

 @echo off &setlocal for /f "tokens=1-3*delims=_" %%i in ('dir /b /ad *.pdf ^| find /i /v "_0_"') do ren "%%i_%%j_%%k_%%l" "%%i_%%j_%%k_0_%%l" 
 for /f "tokens=*" %%f in ('dir /b /ad %old%*.pdf^|find /i /v "%new%"') do ( 

应该看你的权利 – 但我会在MOVE之前临时添加一个ECHO来检查它是否正常工作。

有趣的是,你会在你的原始使用*.jpg 。 我估计不太可能工作。

重命名的文件将匹配模式..._0_... _ ..._0_...但原件不会 – 最接近他们将是CHART_LOAN_0.pdf 。 因此,您会发现所有匹配新掩码( /v )的文件名不区分大小写( /i )。 /ad防止与old掩码匹配的目录名称的远程可能性。 管道前的插入符号告诉CMD管道是由for执行的命令的一部分。