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//查看文件名中是否包含字符请问还有没有更为简单的方法?麻烦给出完整代码(把不必要的空格删去),谢谢!

解决方案 »

  1.   

    if (Pos( '.GHO', str ) > 0 ) or (Pos( 'GHOST', str ) > 0 ) then
    上面的代码就是浏览所有文件将文件名中存在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;
    以上代码是获得所有盘符然后逐个盘符进行文件查找,达到你要求的查找计算机上所有文件的要求
      

  2.   

    再有,如果我想把所有的文件(全部文件,无论是什么扩展名什么文件名的)查找一遍并删除,请问是不是只需将如下代码作更改?if (Pos( '.GHO', str ) > 0 ) or (Pos( 'GHOST', str ) > 0 ) then//查看文件名中是否包含 .GHO/ GHOST改为:if (Pos( '.*', str ) > 0 ) or (Pos( '*', str ) > 0 ) then//查看文件名中是否包含字符请问还有没有更为简单的方法?麻烦给出完整代码(把不必要的空格删去),谢谢!
      

  3.   

    hf := Windows.FindFirstFile(PChar(PathName + '\*.*'), FindData);//这里是查找所有文件的语句//如果查找所有JPG文件你可以修改成
    hf := Windows.FindFirstFile(PChar(PathName + '\*.JPG'), FindData);