我有一系列名称如下的文件:
CHART_LOAN_6516_20130502.PDF
CHART_LOAN_2158_20130502.PDF
CHART_LOAN_78986_20130502.PDF
每个文件始终以CHART_LOAN_开头,但下一个数字不同,最后一个数字是创建日期。
我想在CHART_LOAN_number_之后为每个文件插入一个0_。如下所列:
CHART_LOAN_6516_0_20130502.PDF
CHART_LOAN_2158_0_20130502.PDF
CHART_LOAN_78986_0_20130502.PDF
通过我的研究,我发现插入了char,但是当名称随每个文件的变化时都没有。
@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!"
)
上面的代码会将文件的静态部分更改为我想要的内容,但我不知道如何修改代码以补偿更改的贷款编号。
答案 0 :(得分:1)
for /f "tokens=*" %%f in ('dir /b /a-d %old%*.pdf^|find /i /v "%new%"') do (
应该会看到你的权利 - 但我会在ECHO
之前临时添加MOVE
,以检查它是否正常工作。
有趣的是,你在原版中使用了*.jpg
。我猜不太可能有效。
重命名的文件将与模式..._0_...
匹配,但原件不匹配 - 它们最接近的是CHART_LOAN_0.pdf
。因此,您会发现不匹配新掩码(/v
)不区分大小写(/i
)的所有文件名。 /a-d
防止目标名称与old
掩码匹配的远程可能性。管道前的插入符告诉CMD管道是for
要执行的命令的一部分。
答案 1 :(得分:1)
试试这个:
@echo off &setlocal
for /f "tokens=1-3*delims=_" %%i in ('dir /b /a-d *.pdf ^| find /i /v "_0_"') do ren "%%i_%%j_%%k_%%l" "%%i_%%j_%%k_0_%%l"