又一个关于批量改文件名(100分)

  • 主题发起人 主题发起人 bibibidqiu
  • 开始时间 开始时间
B

bibibidqiu

Unregistered / Unconfirmed
GUEST, unregistred user!
我上回问的问题,我已解决了一部分
谢谢Crab给我的那段程序给我很大的
启发.
但是,我现在有一个比较难解决的地
方是
如:在FileListBox中有几个文件
File001.bat
File001.ocq
File001.kbt
File001.bak
他们都是同名而不同后缀名的
我要把他们都改成同名的,但是
Crab给我的方法只能该成
Edit001.bat
Edit002.ocq
EDit003.kbt
Edit004.bak
不知道各位大虾有什么高招呢,
恳请赐教.
 
我不知道Crab给你的程序时什么样的,我想,把目标文件名的扩展名改成你要改的
不就行了吗?这是一个字符串处理的程序啊。
 
改名很容易呀
 
不可能在一个目录下4个文件同名啊(包括扩展名)
 
我希望得到的是一种算法
不知道有没有?
 
我也想知道
 
算什么法? 具体情况具体对待,
调用dos命令 rename file001.* edit001.* 不就行了?
 
FindFirst
FindNext
找到所有你需要改名的文件,存到FileList:TStringList中,
然后
FileList.AlphaSort;

LastName = '';
for i := 0 to FileList.Count - 1 do
if ChangeFileExt(ExtractFileName(FileList),'') = LastName then
FileList改成跟上一个文件同名不同后缀//edit001.ocq,edit001.bat
else
begin
LastName := ChangeFileExt(ExtractFileName(FileList),'');
FileList改成下一个文件名//edit002.ocq
end;
 
好像没说清楚,到底是要基本名相同呢?还是扩展名相同?不会要求两者都相同吧(那是
不可能的,操作系统不允许)!
不管是前两种情况中的哪一种,都很容易的,只不过是字符串的简单处理嘛!
 
不知道你要改什么,是后缀名还是基本名?
 
奇怪,你到底要干什么呢?
要把所有的文件都改成一个名字?
要是这样的话,对每个文件直接改名就行了呀。
for i:=0 to FileList.Count-1 do
begin
Rename(FileList,'NewName.Ext');
P('NewName.Ext');//处理
Rename('NewName.Ext',FileList);
end;
 
我是要做一个批量改名字的东西,就是可以同时一次过
改上千个的文件名,是文件名改,不是后缀改。
 
谢谢你们的回答!
 
后退
顶部