作者XMARTY (其实没有睡的很饱)
看板Programming
标题Re: [问题] 批次改档名
时间Wed Sep 3 09:37:56 2008
如果是我的话
大概只会用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)
1F:推 ec75413:嗯~~先谢谢你!122.120.223.216 09/03 23:27