2014-02-17 134 views
1

如何增加變量名的一部分?變量名的批量增量部分

EG。我想增加

文件名保存像mmddyyyy-prev01-Database.mdb ,我試圖將其重命名爲mmddyyyy-prev02-Database.mdb 隨着代碼

Setlocal EnableDelayedExpansion 
set /a nextFileName=!fileName:~0,13!!fileName:~13!+1 

,我得到 Missing operator.

我使用這個錯誤製作一個批次子將遞歸重命名prevXX項目,以便最新的項目總是prev01。我在我的方法中還經常使用setlocal來保持變量不會在更深的調用之間混合起來

+0

我與只是移動他們對自己的一個打算,但誰遇到這種情況,並希望建立自己的解決方案,無論是其他的答案包括大批量的功能,在一個返回newfilename任何未來的人變量 – PsychoData

回答

3

我要去了艱辛的道路:

@ECHO OFF &SETLOCAL disableDelayedExpansion 
FOR /f "delims=" %%x IN ('DIR /b /a-d /o-n *-prev*-Database.mdb') DO (
    FOR /f "tokens=1-3*delims=v-" %%a IN ("%%~x") DO (
     FOR /f "tokens=*delims=0" %%e IN ("0%%c") DO (
      FOR /f %%f IN ('SET /a %%e+1') DO (
       IF %%f LEQ 9 (
        ECHO REN "%%~x" "%%~a-%%~bv0%%~f-%%~d" 
       ) ELSE (
        ECHO REN "%%~x" "%%~a-%%~bv%%~f-%%~d" 
       ) 
      ) 
     ) 
    ) 
) 

只需卸下ECHO小號使其工作。

+0

+1'tokens = * delims = 0'非常好。 –

+1

我正在建立我自己的功能來做到這一點,但這幾乎已經做到了。它確實將所有的prevs移到了下面,而不僅僅是當天的那些。我添加了'set currDate =%date:〜4,2 %% date:〜7,2 %% date:〜10,4%',並改變了DIR/b/ad/on * -prev * -Database.mdb到'DIR/b/ad/on%currdate%* - prev * -INX0400.mdb',它效果很好! – PsychoData

2

SET /A不會允許您這樣做。

你必須分解成兩行,像這樣:

SET BaseFileName=!FileName:~0,13! 
SET /A Counter=!FileName:~13!+1 

然後,把碎片重新走到一起:

SET NextFileName=%BaseFileName%%Counter%-Database.mdb 

注意:這將無法處理您的領導0。 ..你必須爲此編寫更多的代碼。

+0

因此,我必須保留基文件名,然後對數字部分進行算術運算並重新組合。有道理 – PsychoData

2
... 
set filename=mmddyyyy-prev01-Database.mdb 
call :nextname 
ren %filename% %newname% 
... 


:nextname 
set /a newname=1%filename:~13,2%+1 
set newname=%filename:~0,13%%newname:~-2%%filename:~15% 
goto :eof 

無論你使用ren %filename% %newname%ren !filename! !newname!是語境的問題。您發佈的代碼不夠確定。如果像我懷疑,你是在一個循環中執行ren,那麼你就需要在!var!形式和delayedexpansion(與你熟悉的出現。)在子程序:nextname,該%var%形式應該被使用。

記住,你需要在反向字母順序重命名現有的文件,所以

mmddyyyy-prev03-Database.mdb becomes mmddyyyy-prev04-Database.mdb 
mmddyyyy-prev02-Database.mdb becomes mmddyyyy-prev03-Database.mdb 
mmddyyyy-prev01-Database.mdb becomes mmddyyyy-prev02-Database.mdb 
+0

聰明的數學訣竅。 :) – aphoria

+0

因此,您將數學結果保存到newname,然後將newname設置爲基本文件名和計算字段。簡單 – PsychoData