2013-05-02 56 views
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 

通過我的研究,我發現插入字符,但不是當名稱隨每個文件而改變時。

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

上面的代碼將更改文件的東西我想的靜態部分,但我不知道如何修改代碼以彌補不斷變化的貸款數量。

回答

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執行的命令的一部分。

+0

我不是故意在代碼中使用JPG格式,它應該是.PDF – Chad 2013-05-03 19:23:24

+0

我把刷牙了您的文章一點點的自由。對不起,如果我有什麼問題,在這種情況下,請隨時回滾或根據需要更改我的編輯。 – 2013-05-13 05:24:54

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" 
+0

請注意,LOAN_之後的數字也可能爲0,因此查找過濾器可能會排除這些文件。 – foxidrive 2013-05-03 06:53:42

+0

是的,謝謝:) – Endoro 2013-05-03 06:56:02

+0

但它是一個更理論的選擇,'貸款'不應該'0' :) – Endoro 2013-05-03 06:58:01

相關問題