2017-08-02 26 views
-2

我在文件夾中有很多文件,並且想要將序列號添加到此文件夾中每個文件的開頭。我也希望這些文件按其大小排序,而不是按字母順序排列。將連續數字添加到文件夾中文件名的開頭

例如:文件「something.mp3」應該重命名爲「01 - something.mp3」,如果它是該文件夾中最大的文件。我想在Windows上這樣做。

+3

不錯的主意。告訴我們,當你完成了。 – Stephan

+0

你用bash標記了這個,你是要求一個Bash解決方案還是一個Window cmd? – daniu

+0

我想在Windows上這樣做,如果可能的話。如果不是,我想在Bash做。 –

回答

1
ls -1S | awk '{print "mv \"" $0 "\" \""NR "_" $0"\";"}' | bash 

然而解析ls輸出是不鼓勵使用這個只有當你知道你的文件名不包含任何。異常字符Read more here

+0

您的解決方案在Bash中完美運行,謝謝!我用Git CMD在Windows上運行它。 –

1

擊:

I=0; for FILE in `ls -S`; do mv $FILE "$I - $FILE"; I=$((I+1)); done 
0

由於您的操作系統可能會按字母順序列出文件,我建議在某些時候使用printf(這將產生 「0001 - file1.mp3」, 「0002 - file2.mp3」 等。 )。要更改填充0的數量,請使用printf%0中的另一個數字d。

N=1 
while read -r file 
do 
    mv "$file" "$(printf %04d $N) - $file" 
    N=$((N+1)) 
done < "$(ls -S)" 

(或使用"$(ls -rS)"如果你想有一個逆向排序(從大到小)。

+0

我試圖用批處理腳本來運行它,但沒有發生任何事情。 –

0

FOR命令可以在一個批處理文件被用於確定文件大小:

for %%F in (*.mp3) do echo [%%F] is [%%~zF] bytes 

儘管如此,您還是需要做一些工作才能正確排序,因爲大小10在文本排序中位於大小2之前。

DIR命令可用於列出大小順序文件:

dir /os *.mp3 
dir /o-s *.mp3 
dir /b /o-s *.mp3 > filesbysize.txt 

那麼你可以使用FOR /F讀取該文件,並開始做你的更名邏輯。

SET /A命令可以用來執行整數數學,所以你可以找到一種方法來增加一個計數器,以確定你想要的前綴。

準備好玩弄每個這些命令。學習曲線並不差,但它不是零。

祝你好運!

相關問題