Re: [問題] 批次改檔名

看板Programming作者 (其實沒有睡的很飽)時間17年前 (2008/09/03 09:37), 編輯推噓1(100)
留言1則, 1人參與, 最新討論串2/4 (看更多)
如果是我的話 大概只會用linux的shell script這麼作 暴力法: #!/bin/bash ls *.jpg > picture_list pic_name=`less picture_list` //assign a variable order=1 for i in $pic_name do cp ${i} 2008_summer_${order}.jpg order=$(($order+1)) done 我沒有測試過 所以如果不行的話 你再跟我說一下吧 ※ 引述《ec75413 (無虧/明月幾時有?)》之銘言: : 有使用數位相機的人大概可以理解我的用途吧! : 相片的檔名太怪, 很想自訂如 2008_summer_000.jpg : 或是 : 刪掉了照片後, 檔名有跳過, 如刪掉DC01.jpg, 那麼DC00.jpg的下一張就是DC02.jpg : 想把這種gap弄掉 : 我目前想到幾種解決方案: : 1. Batch : 使用.bat檔大量處理相似的工作, 就像shell或bash : 但是我查了很久, 都很難找到完整的語法, : 目前試不出來, 而且batch能力似乎還很弱 : SET /a counter = 0 : FOR %%i IN (*.jpg) DO call :renamer : goto :eof : :renamer : IF %counter% LSS 10( : rename %%i 00%counter%.jpg : ) : ELSE IF %counter% LSS 100( : rename %%i 0%counter%.jpg : ) : ELSE( : rename %%i %counter%.jpg : ) : SET /a counter = %counter% + 1 : 我也只是寫個概念而已... 當中的語法我所知真的有限 : 2. 自己寫一隻小程式, 但是這樣的話讀取"檔名"和改檔名該怎麼做呢? : int i = 0; : while(1) : { : if( all the file scanned ) break; : else if( (a = GetFile()) > 0) : { : if(i<10) : .... : else : Syetem("rename " + a + " " + i + ".jpg"); : } : } : 這當中很多地方都只能寫psuedo code : 因為我不知道該怎麼讀檔名和判斷檔案讀完與否 : 3. 丟Linux改 但我還不會Bash : 4. 使用bash for win 但這個說不定比直接丟Linux還要花更多時間研究 : 因為費了不少時間都還沒得到解決方法, : 只好來這裡徵求高手幫忙... : 我實在覺得這種小工作沒必要去網路找程式才能動作。 : 所以希望能有人指點一條明燈 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.112.50.132 ※ 編輯: XMARTY 來自: 140.112.50.132 (09/03 09:38) ※ 編輯: XMARTY 來自: 140.112.50.132 (09/03 09:38) ※ 編輯: XMARTY 來自: 140.112.50.132 (09/03 09:54) ※ 編輯: XMARTY 來自: 140.112.50.132 (09/03 09:55)

09/03 23:27, , 1F
嗯~~先謝謝你!
09/03 23:27, 1F
文章代碼(AID): #18lUftqw (Programming)
文章代碼(AID): #18lUftqw (Programming)