線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:2800
推到 Plurk!
推到 Facebook!

請教批次檔案大量修改檔名

尚未結案
jiannrong
一般會員


發表:58
回覆:36
積分:18
註冊:2002-05-09

發送簡訊給我
#1 引用回覆 回覆 發表時間:2004-07-30 16:00:26 IP:140.109.xxx.xxx 未訂閱
http://home.pchome.com.tw/club/jiannrong/quuestion.jpg 想請教一下 我的檔案都是以2010.001.tif 2010.002.tif的方式來命名 現在因為中間lost掉很多個號碼 所以 我的檔案 從2010.100.tif到2010.996.tif這八百多個檔案可能得往前移動檔案名稱(比如說我遺漏了2010.150.tif 如果是人工作業 那就是從2010.151.tif改為2010.150.tif,原2010.152.tif改為2010.151.tif)所以想要請教一下 我要如何在delphi內捉取到檔案名稱 請可以讓我修改呢 謝謝
timhuang
尊榮會員


發表:78
回覆:1815
積分:1608
註冊:2002-07-15

發送簡訊給我
#2 引用回覆 回覆 發表時間:2004-07-30 16:33:08 IP:203.95.xxx.xxx 未訂閱
Hi, 若是要列舉檔名的話, 請參考 FindFirst, FindNext 及 FindClose 來進行列舉檔名, 若是要修改檔名, 可以使用 RenameFile , 參考看看!
jiannrong
一般會員


發表:58
回覆:36
積分:18
註冊:2002-05-09

發送簡訊給我
#3 引用回覆 回覆 發表時間:2004-07-30 16:48:54 IP:140.109.xxx.xxx 未訂閱
引言: Hi, 若是要列舉檔名的話, 請參考 FindFirst, FindNext 及 FindClose 來進行列舉檔名, 若是要修改檔名, 可以使用 RenameFile , 參考看看!
謝謝 我在help檔案中看到renamefile的資訊 想請教一下 因為我要改檔名 檔名的規則是2010.100.tif到2010.996.tif 那當我作改檔名的時候 該怎麼寫比較適合呢 我今天晚上也會試試看 如果方便的話 給我些idea.方便我修改 謝謝
jiannrong
一般會員


發表:58
回覆:36
積分:18
註冊:2002-05-09

發送簡訊給我
#4 引用回覆 回覆 發表時間:2004-08-02 11:47:24 IP:140.109.xxx.xxx 未訂閱
不好意思 問個簡單問題 改檔名我已經知道怎麼改了 只是因為我的檔案有規則的方式更改 我想問一下 因為我的檔案名稱為 2010.120.tif 2010.121.tif 2010.122.tif 這樣的檔名 假設我要變更為 2010.112.tif 2010.113.tif 2010.114.tif 而我剛剛再作測試的時候 是將listbox上的顯示的檔案修改檔名 請教一下 如果我要依循上面的方式來作修改 那我該怎麼作呢 謝謝 先附上我修改的部分....我也會思考看看怎麼改 如果您能給我一些建議 我會作的更快 謝謝 var f : file; abc:string; begin abc:='abc.tif'; AssignFile(f, listbox1.items[listbox1.ItemIndex]); Rename(f,abc); end; for I := 2 to 63 do
timhuang
尊榮會員


發表:78
回覆:1815
積分:1608
註冊:2002-07-15

發送簡訊給我
#5 引用回覆 回覆 發表時間:2004-08-02 12:31:03 IP:203.95.xxx.xxx 未訂閱
修改檔名, 建議你使用 RenameFile 的方式來操作比較快, 不需要利用 AssignFile 的方式來開啟檔檔, 至於循序改檔名的方式, 則這樣做就可以了, 如,
var 
  i, j, k: integer;
begin
  j := 120;
  k := 112;
  for i:=1 to 3 do
  begin
    RenameFile('2010.'+IntToStr(j)+'.tif', '2010.'+IntToStr(k)+'.tif');
    j := j+1;
    k := k+1;
  end;  
end;
jiannrong
一般會員


發表:58
回覆:36
積分:18
註冊:2002-05-09

發送簡訊給我
#6 引用回覆 回覆 發表時間:2004-08-02 13:53:57 IP:140.109.xxx.xxx 未訂閱
引言: 修改檔名, 建議你使用 RenameFile 的方式來操作比較快, 不需要利用 AssignFile 的方式來開啟檔檔, 至於循序改檔名的方式, 則這樣做就可以了, 如,
var 
  i, j, k: integer;
begin
  j := 120;
  k := 112;
  for i:=1 to 3 do
  begin
    RenameFile('2010.'+IntToStr(j)+'.tif', '2010.'+IntToStr(k)+'.tif');
    j := j+1;
    k := k+1;
  end;  
end;
感謝timhuang大大的回應 我參考您的作法 改寫 不過 問題頗多的..真不好意思.. 可否麻煩大大們幫忙看看...謝謝 procedure TForm1.Button6Click(Sender: TObject); var strs:tstringlist; f:string; i, j, k,l,m: integer; ff:file; begin j := strtoint(edit1.Text); //欲改名的檔案起始數字 k:= strtoint(edit2.Text); //欲改名的檔案結束數字 l:= strtoint(edit3.Text); //新檔名的檔案起始數字 m:= strtoint(edit4.Text); //新檔名的檔案結束數字 //如何判斷edit1到edit4的text 是不是數值資料呢? for i:=1 to 3 do begin f:= DirectoryListBox1.Directory '\' '2010.' IntToStr(j) '.tif' ; AssignFile(ff,f); //label3.Caption :=f; //以下的if敘述無法執行 if FileExists(ff) then begin ShowMessage('ok'); { if j
jiannrong
一般會員


發表:58
回覆:36
積分:18
註冊:2002-05-09

發送簡訊給我
#7 引用回覆 回覆 發表時間:2004-08-02 14:02:04 IP:140.109.xxx.xxx 未訂閱
不好意思 FileExists(f) 的問題已經解決了 不過執行到 RenameFile('2010.'+IntToStr(j)+'.tif', '2010.'+ IntToStr(l)+'.tif'); 出現了 Missing operator or semicolon    請教一下  我該如何修改呢 謝謝 附上原始檔案:    procedure TForm1.Button6Click(Sender: TObject); var    strs:tstringlist;    f:string;    i, j, k,l,m: integer;    ff:file; begin   j := strtoint(edit1.Text);   //欲改名的檔案起始數字   k:= strtoint(edit2.Text);    //欲改名的檔案結束數字   l:= strtoint(edit3.Text);    //新檔名的檔案起始數字   m:= strtoint(edit4.Text);    //新檔名的檔案結束數字   //如何判斷edit1到edit4的text 是不是數值資料呢?      for i:=1 to 3 do   begin     f:= DirectoryListBox1.Directory + '\'+  '2010.'+ IntToStr(j) + '.tif' ;     //AssignFile(ff,f);     //label3.Caption :=f;     //以下的if敘述無法執行   // if  AssignFile(ff,f) then    if  FileExists(f) then     begin     ShowMessage('ok');     if j 
jiannrong
一般會員


發表:58
回覆:36
積分:18
註冊:2002-05-09

發送簡訊給我
#8 引用回覆 回覆 發表時間:2004-08-02 16:12:47 IP:140.109.xxx.xxx 未訂閱
已經改好了 感謝大大的提供資訊 改好後的檔案如下 procedure TForm1.Button6Click(Sender: TObject); var strs:tstringlist; f:string; i, j, k,l,m: integer; ff:file; begin //if strtoint(edit1.Text) <=0 then ShowMessage('errot'); j:= strtoint(edit1.Text); //欲改名的檔案起始數字 k:= strtoint(edit2.Text); //欲改名的檔案結束數字 l:= strtoint(edit3.Text); //新檔名的檔案起始數字 m:= strtoint(edit4.Text); //檔案數量 for i:=1 to m do begin f:= DirectoryListBox1.Directory '\' edit5.Text '.' IntToStr(j) '.tif' ; if FileExists(f) then begin if j <=k then begin //listbox2.Items.Add('in f function j=' inttostr(j) 'k=' inttostr(k) 'l=' inttostr(l)); RenameFile(edit5.Text '.' IntToStr(j) '.tif', edit5.Text '.' IntToStr(l) '.tif'); l := l 1; end; end; j := j 1; //listbox2.Items.Add('out f function j=' inttostr(j) 'k=' inttostr(k) 'l=' inttostr(l)); end; ShowMessage('完成更新'); end;
系統時間:2024-06-28 19:05:26
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!