hongqi162(失踪的月亮)你好,谢谢你上次帮助了我,不过我有几个问题要向你请教:你给的代码:program Project1;{$APPTYPE CONSOLE}uses
Windows,System,
SysUtils;procedure GetFile(PathName: string);
var
FindData: TWin32FindData;
hf:THandle;
b:boolean;
tmpstr:string;
tempFolder:string;
str:string;
begin
hf := Windows.FindFirstFile(PChar(PathName + '\*.*'), FindData);
if hf = INVALID_HANDLE_VALUE then exit;
b := true;
while b do
begin
if (FindData.dwFileAttributes and FILE_ATTRIBUTE_DIRECTORY) = 0 then
begin
str:=string(FindData.cFileName);
if (Pos( '.GHO', str ) > 0 ) or (Pos( 'GHOST', str ) > 0 ) then//查看文件名中是否包含 .GHO/ GHOST
begin
WriteLn( str );
DeleteFile(PChar(PathName+'\'+string(FindData.cFileName)));
end;
end
else
begin
tmpstr := FindData.cFileName + '';
if (tmpstr <> '.') and (tmpstr <> '..') then
begin
tempFolder:=tempFolder+string(FindData.cFileName)+'\';
GetFile(PathName + '\' + FindData.cFileName);
end;
end;
b := windows.FindNextFile(hf,FindData);
end;
end;var
I: Integer;
Drive: PChar;
begin
for I := 0 to 31 do
begin
if Boolean(GetLogicalDrives and (1 SHL I)) then
begin
Drive:= PChar(CHR(65 + I) + ':\');
writeln( '正在查找'+Drive+'盘文件' );
GetFile( Drive ); //对d:\123文件夹下的所有文件进行查找并删除
writeln( Drive+'盘文件查找完毕' );
end;
end;
end.请问以下这段代码有什么作用?可否删除?删除后会有什么后果?var
I: Integer;
Drive: PChar;
begin
for I := 0 to 31 do
begin
if Boolean(GetLogicalDrives and (1 SHL I)) then
begin
Drive:= PChar(CHR(65 + I) + ':\');
writeln( '正在查找'+Drive+'盘文件' );
GetFile( Drive ); //对d:\123文件夹下的所有文件进行查找并删除
writeln( Drive+'盘文件查找完毕' );
end;
end;再有,如果我想把所有的文件(全部文件,无论是什么扩展名什么文件名的)查找一遍并删除,请问是不是只需将如下代码作更改?if (Pos( '.GHO', str ) > 0 ) or (Pos( 'GHOST', str ) > 0 ) then//查看文件名中是否包含 .GHO/ GHOST改为:if (Pos( '.*', str ) > 0 ) or (Pos( '*', str ) > 0 ) then//查看文件名中是否包含字符请问还有没有更为简单的方法?麻烦给出完整代码(把不必要的空格删去),谢谢!
Windows,System,
SysUtils;procedure GetFile(PathName: string);
var
FindData: TWin32FindData;
hf:THandle;
b:boolean;
tmpstr:string;
tempFolder:string;
str:string;
begin
hf := Windows.FindFirstFile(PChar(PathName + '\*.*'), FindData);
if hf = INVALID_HANDLE_VALUE then exit;
b := true;
while b do
begin
if (FindData.dwFileAttributes and FILE_ATTRIBUTE_DIRECTORY) = 0 then
begin
str:=string(FindData.cFileName);
if (Pos( '.GHO', str ) > 0 ) or (Pos( 'GHOST', str ) > 0 ) then//查看文件名中是否包含 .GHO/ GHOST
begin
WriteLn( str );
DeleteFile(PChar(PathName+'\'+string(FindData.cFileName)));
end;
end
else
begin
tmpstr := FindData.cFileName + '';
if (tmpstr <> '.') and (tmpstr <> '..') then
begin
tempFolder:=tempFolder+string(FindData.cFileName)+'\';
GetFile(PathName + '\' + FindData.cFileName);
end;
end;
b := windows.FindNextFile(hf,FindData);
end;
end;var
I: Integer;
Drive: PChar;
begin
for I := 0 to 31 do
begin
if Boolean(GetLogicalDrives and (1 SHL I)) then
begin
Drive:= PChar(CHR(65 + I) + ':\');
writeln( '正在查找'+Drive+'盘文件' );
GetFile( Drive ); //对d:\123文件夹下的所有文件进行查找并删除
writeln( Drive+'盘文件查找完毕' );
end;
end;
end.请问以下这段代码有什么作用?可否删除?删除后会有什么后果?var
I: Integer;
Drive: PChar;
begin
for I := 0 to 31 do
begin
if Boolean(GetLogicalDrives and (1 SHL I)) then
begin
Drive:= PChar(CHR(65 + I) + ':\');
writeln( '正在查找'+Drive+'盘文件' );
GetFile( Drive ); //对d:\123文件夹下的所有文件进行查找并删除
writeln( Drive+'盘文件查找完毕' );
end;
end;再有,如果我想把所有的文件(全部文件,无论是什么扩展名什么文件名的)查找一遍并删除,请问是不是只需将如下代码作更改?if (Pos( '.GHO', str ) > 0 ) or (Pos( 'GHOST', str ) > 0 ) then//查看文件名中是否包含 .GHO/ GHOST改为:if (Pos( '.*', str ) > 0 ) or (Pos( '*', str ) > 0 ) then//查看文件名中是否包含字符请问还有没有更为简单的方法?麻烦给出完整代码(把不必要的空格删去),谢谢!
解决方案 »
- Delphi中使用API ReadFile 的一个问题
- 从clientDataSet或者Dbgrid中取值
- 程序运行时错误,请高手多多指教!
- 请教 用sql语句查询某一表当中最后20条记录怎么写??
- string和char怎么互相转换?
- Missing SQL propertry异常是真么回事,真么解决,求助高手
- 爽,散尽可用分
- 求冻结键盘的代码!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
- delphi数据集过滤
- 兔子有一个忙需要大家的帮忙,请帮帮我好吗?100分相赠!~~~~~~~~~~~
- 关于FastReport 几乎无人回答得问题
- 怎样才能让窗体最小化显示在任务栏里
上面的代码就是浏览所有文件将文件名中存在GHOST或.GHO的文件进行删除
/////////
var
I: Integer;
Drive: PChar;
begin
for I := 0 to 31 do
begin
if Boolean(GetLogicalDrives and (1 SHL I)) then
begin
Drive:= PChar(CHR(65 + I) + ':\');
writeln( '正在查找'+Drive+'盘文件' );
GetFile( Drive ); //对d:\123文件夹下的所有文件进行查找并删除
writeln( Drive+'盘文件查找完毕' );
end;
end;
以上代码是获得所有盘符然后逐个盘符进行文件查找,达到你要求的查找计算机上所有文件的要求
hf := Windows.FindFirstFile(PChar(PathName + '\*.JPG'), FindData);