1

我有一系列名称如下的文件:

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!"
)

上面的代码会将文件的静态部分更改为我想要的内容,但我不知道如何修改代码以补偿更改的贷款编号。

4

2 回答 2

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.

于 2013-05-03T01:30:42.947 回答
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"
于 2013-05-03T05:22:45.817 回答