2014-01-16 164 views
0

我想重命名一系列.jpg,但我想在文件名的末尾追加字符串。請幫助我如何才能實現這一點,因爲我是批處理文件編碼的新手。For循環通過批處理文件重命名.jpg文件

jpg文件系列 - CurDt_S1,CurDt_S2,CurDt_S3等.. uptill S20。

我想CurDt_1_S1更換CurDt_S1爲 - CurDt_1_S1,CurDt_1_S2,CurDt_1_S3 uptill S20。

這裏是我使用的代碼 -

setlocal enabledelayedexpansion 
    set str=_1 
    for %%a in (CurDt_S*.jpg) do (
     set oldName=%%a 
     set newName=oldname+str 
      call :Action 
     echo. 
     echo back in For loop 
    ) 
    echo. 
    echo For loop completed 
    echo !oldName! 
    echo !newName! 
    endlocal 
    goto:eof 

    :Action 
    echo. 
    echo start of Action loop 
    echo !oldName! 
    echo !newName! 
    ren "!oldName!" "!newName!" 
    echo end of Action loop 

感謝, 斯納

+1

適當的標記方法(用語言)將讓你更快地幫助.. –

+0

什麼語言呢? –

+0

代碼是批處理文件 – user2742601

回答

0

我終於想通了簡單的。方式通過最簡單的方式使用BATCH實現這一目標。

通過以下鱈魚e -

del CurDt_5_S* 
ren CurDt_4_S* CurDt_5_S* 
ren CurDt_3_S* CurDt_4_S* 
ren CurDt_2_S* CurDt_3_S* 
ren CurDt_1_S* CurDt_2_S* 

我測試了它和它的工作。 :) :) :)

0

這是我能想到的最簡單的方法:

@echo off 
set i=1 
for %%f in (CurDt_S*.jpg) do call :renameit "%%f" 
goto done 

:renameit 
ren CurDt_S%i%.jpg CurDt_1_S%i%.jpg 

set /A i+=1 
:done 

它假定批文件位於與jpg文件相同的目錄中。

希望這會有所幫助。

0
for %%f in ("c:\somewhere\CurDt_*.jpg") do (
    for /f "tokens=1,* delims=_" %%g in ("%%~nf") do echo ren "%%~ff" "%%~g_1_%%~h%%~xf" 
) 

對於每個所指示的文件的,使用第一下劃線作爲分隔符,以獲得兩個部分,並將該文件重命名爲所述第一令牌+ _1_ +第二令牌+文件擴展分割的文件的名稱。

結果僅迴應到控制檯。如果輸出正確,則刪除echo命令以重命名文件。

1
for /L %%x in (1,1,20) do ECHO ren CurDt_S%%x.jpg CurDt_1_S%%x.jpg 

應該適合你。

爲了測試目的,所需的命令僅僅是ECHO。在確認命令正確後,將ECHO REN更改爲REN以實際重命名文件。

0

我正在使用以下代碼重命名文件。基本上,這將是如下 - CurDt_S1將改名爲CurDt_1_S1 uptill S20, CurDt_1_S1到CurDt_2_S1 uptill S20, CurDt_2_S1到CurDt_3_S1 uptill S20, CurDt_3_S1到CurDt_4_S1 uptill S20, 和CurDt_4_S1文件將被歸檔到一個差異文件夾。

代碼是如下 -

集合I = 1 用於%% F( 「C:\用戶\ 341256 \桌面\ test_batch_files \ CurDt_4_S * .JPG」)做電:currentdate4「%%˚F %% f in(「C:\ Users \ 341256 \ Desktop \ test_batch_files \ CurDt_3_S * .jpg」)中的%% f的 「%% f」 (「C:\ Users \ 341256 \ Desktop \ test_batch_files \ CurDt_1_S * .jpg」)do call:currentdate1「%2」%2 $%2「 %「f」 for %% f in(「C:\ Users \ 341256 \ Desktop \ test_batch_files \ CurDt_S *。JPG「)也稱:的currentdate 」%% F「 轉到做 出口

 :currentdate4 
      if exist C:\Users\341256\Desktop\test_batch_files\CurDt_4_S*.jpg (
      rem move C:\Users\341256\Desktop\test_batch_files\CurDt_4_S*.jpg C:\Users\341256\Desktop\test_batch_files\Archive 
      echo moved current_date-4 files)  

     :currentdate3 
     if exist C:\Users\341256\Desktop\test_batch_files\CurDt_3_S*.jpg (
      ren CurDt_3_S%i%.jpg CurDt_4_S%i%.jpg 
      echo renamed _3 to _4) 

     :currentdate2 
      if exist C:\Users\341256\Desktop\test_batch_files\CurDt_2_S*.jpg (
      ren CurDt_2_S%i%.jpg CurDt_3_S%i%.jpg 
      echo renamed _2 to _3) 

     :currentdate1 
     if exist C:\Users\341256\Desktop\test_batch_files\CurDt_1_S*.jpg (
      ren CurDt_1_S%i%.jpg CurDt_2_S%i%.jpg 
      echo renamed _1 to _2) 

     :currentdate 
     if exist C:\Users\341256\Desktop\test_batch_files\CurDt_S*.jpg (
      ren CurDt_S%i%.jpg CurDt_1_S%i%.jpg 
      echo renamed currdt to _1 
      echo complete) 

     set /A i+=1 
     :done 
     pause 

請建議,如果它是正確的

感謝, 斯納

+0

hI ggaans,我使用你的建議代碼來重命名。我在這裏詳細提到它。但它不適用於我,它不是重命名所有文件,而只是重新命名文件。你能幫我解決這個問題嗎? – user2742601