作者ec75413 (無虧/明月幾時有?)
看板Programming
標題[問題] 批次改檔名
時間Wed Sep 3 03:03:27 2008
有使用數位相機的人大概可以理解我的用途吧!
相片的檔名太怪, 很想自訂如 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
::end
我也只是寫個概念而已... 當中的語法我所知真的有限
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: 122.120.208.30
推 sunneo:讀取檔名可以用opendir -> readdir 59.127.209.65 09/03 10:53
→ sunneo:然後還可以用fstat看檔案屬性 跳過SUBDIR 59.127.209.65 09/03 10:54
推 jaw109:我只會C++,這種事情我都用C++做的 XD 60.250.140.195 09/03 12:09
→ tkyifang:AcdSee有這功能,我常用 211.23.44.109 09/03 17:10