請教批次檔案大量修改檔名 |
尚未結案
|
jiannrong
一般會員 發表:58 回覆:36 積分:18 註冊:2002-05-09 發送簡訊給我 |
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 發送簡訊給我 |
|
jiannrong
一般會員 發表:58 回覆:36 積分:18 註冊:2002-05-09 發送簡訊給我 |
|
jiannrong
一般會員 發表:58 回覆:36 積分:18 註冊:2002-05-09 發送簡訊給我 |
不好意思 問個簡單問題 改檔名我已經知道怎麼改了
只是因為我的檔案有規則的方式更改
我想問一下 因為我的檔案名稱為
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 發送簡訊給我 |
修改檔名, 建議你使用 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 發送簡訊給我 |
引言: 修改檔名, 建議你使用 RenameFile 的方式來操作比較快, 不需要利用 AssignFile 的方式來開啟檔檔, 至於循序改檔名的方式, 則這樣做就可以了, 如,感謝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 jvar 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 發送簡訊給我 |
不好意思
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 發送簡訊給我 |
已經改好了
感謝大大的提供資訊
改好後的檔案如下
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;
|
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |