删除文件

kellerlee 2002-12-17 04:25:28
现在我的文件夹里有一批文件:A00.JPG,
A01.JPG,
A02.JPG,
B00.JPG,
B01.JPG,
......
我用了deletefile(fileName) 但这条命令一次只能删除一个文件,
请问各位高手,如果我要一次删除A00.JPG, A01.JPG, A02.JPG,有什么办法可以做得到?了?
...全文
34 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
blazingfire 2002-12-20
  • 打赏
  • 举报
回复
思路:写一个.Bat文件就可以了如下:
uses
ShellAPI;
procedure TForm1.Button1Click(Sender: TObject);
var
AList:TStringList;
FileName:String;
begin
AList:=TStringList.Create;
AList.Add('Del E:\A*.JPG');
//删除象这样A01.JPG,A00.JPG....的文件
FileName:=ExtractFilePath(ParamStr(0))+'Tmp.bat';
AList.Add('Del '+FileName);
AList.SaveToFile(FileName);
//回写成一个批处理文件
AList.Free;
ShellExecute(Handle,nil,
PChar(FileName),
nil,nil,SW_HIDE);
//运行这个批处理文件
SetForegroundWindow(Handle);
//激活当前的窗体  
end;
kellerlee 2002-12-20
  • 打赏
  • 举报
回复
谢谢各位
killlaoli 2002-12-20
  • 打赏
  • 举报
回复
to wfnumen2():
呵呵,是吗?
可这句filewrite(HndFile,'del ' + edit1.text + '*.jpg'+#13#10,length('del ' + edit1.text + '*.jpg'));
确实是报错啊,查帮助说
function FileWrite(Handle: Integer; const Buffer; Count: Integer): Integer;
第二个参数是buffer类型的,buffer是不是就是pchar啊,照理说我改成这样应该能运行的
var
str: string;
.............
str := 'del ' + edit1.text + '*.jpg'+#13#10;
filewrite(HndFile,str,length(str));
可还是不行,不知为何?高手指点
wfnumen2 2002-12-19
  • 打赏
  • 举报
回复
to :killlaoli(菜鸟)
呵呵,writeln(string)和filewrite(string+#13#10)是一样的
killlaoli 2002-12-19
  • 打赏
  • 举报
回复
to kellerlee()
不好意思,filewrite这么拼串好象不对,用writeln应该没问题

procedure TForm1.Button1Click(Sender: TObject);
var
F: TextFile;
iFileHandle :integer;
begin
iFileHandle := FileCreate('f:\delJpg.bat');
FileClose(iFileHandle);

AssignFile(F, 'f:\delJpg.bat');
Append(F);
Writeln(F, 'del f:\' + edit1.Text + '*.txt');
Writeln(F, 'del f:\delJpg.bat');
CloseFile(F);

WinExec(pchar('f:\delJpg.bat'),SW_hide);
end;
jackystar 2002-12-19
  • 打赏
  • 举报
回复
帮我看一下我的问题好吗?谢谢
http://expert.csdn.net/Expert/topic/1277/1277421.xml?temp=.7349359
jackystar 2002-12-19
  • 打赏
  • 举报
回复
//删除目录下的某种类型的文件,支持通配符
Function DeleteFileOneType(ADirctory:string;
AFileName:string;
ASubDirectory:Boolean):boolean;
var
lpFileOp: TSHFileOpStruct;
FromDir:PChar;
ToDir:PChar;
f:TSearchRec;
begin
if AsubDirectory then//包括子目录
begin
GetMem(FromDir, Length(ADirctory+'\'+AFileName)+2);
GetMem(ToDir, Length(ADirctory)+2);
Try
FillChar(FromDir^, Length(ADirctory+'\'+AFileName)+2, 0);
FillChar(ToDir^, Length(ADirctory)+2, 0);
StrCopy(FromDir, PChar(ADirctory+'\'+AFileName));
StrCopy(ToDir, PChar(ADirctory));
lpFileop.wFunc:=FO_DELETE;
lpFileop.Wnd:=Application.Handle;
lpFileop.pFrom:=FromDir;
lpFileop.pTo:=ToDir;
lpFileop.fFlags:=FOF_NOCONFIRMMKDIR or FOF_NOCONFIRMATION or FOF_FILESONLY or FOF_NOERRORUI;
lpFileop.fAnyOperationsAborted := False;
lpFileop.hNameMappings := nil;
lpFileop.lpszProgressTitle := nil;
Result:=SHFileOperation(lpFileop)=0;
Finally
FreeMem(ToDir,Length(ADirctory)+2);
FreeMem(FromDir,Length(ADirctory+'\'+AFileName)+2);
end;
end
else //不包括子目录
begin
Result:=false;
if FindFirst(ADirctory+'\'+AFileName,$0000003F,f)=0 then
begin
Result:=DeleteFile(ADirctory+'\'+f.Name);
while FindNext(f) = 0 do
DeleteFile(ADirctory+'\'+f.Name);
FindClose(f);
end;
end;
end;



基本上能用
kellerlee 2002-12-19
  • 打赏
  • 举报
回复
TO: killlaoli(菜鸟)
你的这段代码编译不了,系统老是报错:Variable Repuired
请你再帮帮忙!
killlaoli 2002-12-18
  • 打赏
  • 举报
回复
学习!

替wfnumen2()朋友解释一下,输入A0就执行 del A0*.jpg,输入B0就执行 del B0*.jpg...

将wfnumen2()朋友的代码稍做修改就行了。

var
HndFile:Thandle;
begin
HndFile:= filecreate('delJpg.bat');
filewrite(HndFile,'del ' + edit1.text + '*.jpg'+#13#10,length('del ' + edit1.text + '*.jpg'));
filewrite(HndFile,'del delJpg.bat',length('del delJpg.bat'));
fileclose(HndFile);
WinExec(pchar('.\delJpg.bat'),SW_hide);
end
kellerlee 2002-12-18
  • 打赏
  • 举报
回复
TO:wfnumen2()
我是想在 EDIT里输入一个“A0”就可以把文件夹里大A00.JPG,
A01.JPG,
A02.JPG,都删除,
输入“B0”就可以把文件夹的 B00.JPG,
B01.JPG,都删除,
如此类推,由于我是刚学者,看不懂你的意思,可以详细点吗?
wfnumen2 2002-12-18
  • 打赏
  • 举报
回复
var
HndFile:Thandle;
begin
HndFile:= filecreate('delJpg.bat');
filewrite(HndFile,'del *.txt'+#13#10,length('del *.txt'+#13#10));
filewrite(HndFile,'del delJpg.bat',length('del delJpg.bat'));
fileclose(HndFile);
WinExec(pchar('.\delJpg.bat'),SW_hide);
end
johnmack 2002-12-17
  • 打赏
  • 举报
回复
用API函数SHFileOperation(LPSHFILEOPSTRUCT lpFileOp );
moonet 2002-12-17
  • 打赏
  • 举报
回复
不知道用 shellexcute 这个API 来调 delete 可不可以
beata88 2002-12-17
  • 打赏
  • 举报
回复
to: yang6130(无限可能) :
具体是怎么调用Dos命令Del,说说好吗?我 也在学习中!!!!
yang6130 2002-12-17
  • 打赏
  • 举报
回复
调用DOS命令del *.jpg
killlaoli 2002-12-17
  • 打赏
  • 举报
回复
做个循环,拼文件名删行吗?

5,930

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧