2016-07-15 64 views
1

我想重命名大量文件到財產以後像S001S002等。 我從here該代碼添加一個前綴:數字後綴添加到文件名在Windows

for %a in (*.*) do ren "%a" "prefix - %a" 

所以我試圖修改它,一個變量將與for增加,這樣的事情:

for /l %x in (1,1,5) do %a in (*.*) do ren "%a" "SQ00%x" 

顯然,這是錯的,我後來讀到/l使得在數值工作代替文件名,所以%a不代表任何東西(糾正我,如果我錯了)。

所以我想知道如何使用文件夾內的文件的文件名在for循環中增加一個值。

編輯

我現在設法寫一個批處理,將重命名文件,並且:

  • 做在一個特定的目錄
  • 與特定的文件擴展名
  • 告訴你該目錄中有多少個該擴展名的文件
  • 要求輸入一個新名稱,稍後將添加數字後綴ES
  • 循環改變在不同的目錄

    ECHO OFF 
    
    Setlocal enabledelayedexpansion 
    
    :start 
    
    cls 
    
    echo "%cd%" 
    
    echo where are the files?   
    set/p "files=>"   
    cd "%files%" 
    
    echo now in:  
    echo "%cd%" 
    
    echo files extension: 
    set/p "ext=>" 
    
    ::amount of files in the directory 
    set/a cnt=0  
    for %%a in (*.%ext%) do set /a cnt+=1 
    echo File count = %cnt% 
    PAUSE 
    
    echo new file name: 
    set/p "name=>" 
    
    set/a Count=1 
    for /r %%a in (*.%ext%) do (
    echo !Count! 
    ren "%%a" "%name%!Count!.%ext%" 
    set /a Count=Count+1 
    ) 
    
    PAUSE 
    
    goto start 
    

現在的問題是,FOR循環,重命名這些文件做1個多循環,目錄中的文件和我的量不要」文件知道爲什麼

run

回答

2
Setlocal enabledelayedexpansion 
for %%a in (*.*) do (
    set /a Count=Count+1 
    echo ren "%%a" "!Count! - %%a" 
    ) 

是單向的。見set /?setlocal /?

從Windows NT命令外殼

括號也可以用於輸入多行命令。如果命令行以一組或多組不平衡圓括號結束,則命令行假定在下一行繼續。如果命令是交互式輸入的,shell會提示輸入更多的內容,直到所有括號保持平衡。如果該命令是腳本的一部分,shell將讀取其他腳本行,直到所有括號保持平衡。例如:

1. C:\>(
2. More?echo command1 
3. More?echo command2 
4. More?) 
5. command1 
6. command2 

第一行只包含一個左括號。 shell檢測到這一點,並提示輸入更多信息。接下來,輸入兩個ECHO命令。最後,右括號平分開括號,命令完成。 shell然後執行復合命令,它執行兩個單獨的ECHO命令。 單個命令不能跨越多行命令中的行。物理線路的末端總是終止一個簡單的命令(無論是鍵入還是輸入腳本文件)。請注意,在前面的例子中,物理線路的末端是如何終止每條ECHO命令的。

相關問題