2016-05-13 60 views
0

我使用的是窗口操作系統,我下載了視頻作爲系列課。我想按日期排序這些視頻,並將第一個視頻的前綴編號添加爲1比2,3 .....我在這裏找到答案How to rename and add incrementing number suffix on multiple files in Batch Script?它可以將數字添加到文件名,但只能按名稱排序而不是日期。感謝和抱歉我的英語。如何在批處理腳本中的多個文件上按日期添加遞增數字前綴順序?

+1

隨着'DIR/O'你可以列出按日期排序的文件(參見'DIR /'的選擇嗎?);你可以通過'for/F'循環解析它的輸出,安裝一個計數器變量並通過'ren'將它加到文件名中。 – aschipfl

回答

0

下面是一個簡單的實現什麼aschipfl在他的評論中建議:

@echo off 
setlocal enableDelayedExpansion 
set /a n=0 
for /f "delims=" %%F in ('dir /b /od') do (
    set /a n+=1 
    ren "%%F" "!n!_%%F" 
) 

但有兩個潛在的問題:

1)FOR/F命令有;默認EOL字符 - 如果文件名以;開頭,那麼它將被跳過。簡單的解決方案是將EOL設置爲不能出現在文件名中的字符 - :是一個不錯的選擇。

2)如果文件名包含!字符,則重命名將失敗,因爲延遲擴展已啓用,並且%%F在延遲擴展之前展開。解決的辦法是在文件名保存到變量中,然後切換環路

@echo off 
setlocal disableDelayedExpansion 
set /a n=0 
for /f "eol=: delims=" %%F in ('dir /b /od') do (
    set "file=%%F" 
    set /a n+=1 
    setlocal enableDelayedExpansion 
    ren "!file!" "!n!_!file!" 
    endlocal 
) 

有一個簡單的選擇內延遲擴展ON和OFF - 使用FINDSTR /N前綴與行號DIR /B /OD輸出,然後使用FOR /F解析出數字和文件名。現在不需要計數器變量或延遲擴展。

@echo off 
for /f "delims=: tokens=1*" %%A in ('dir /b /od ^| findstr /n "^"') do ren "%%B" "%%A_%%B" 

你甚至不需要批處理文件。您可以使用直接在命令行:

for /f "delims=: tokens=1*" %A in ('dir /b /od ^| findstr /n "^"') do ren "%B" "%A_%B" 
相關問題