winexec("dir c:\windows\*.dll >>f.txt");

解决方案 »

  1.   

    用DIRLIST控件和FILELIST,可以的
      

  2.   

    标准函数:
    //==============================================================================
    //统计指定目录下指定类型文件数量(包括子目录)**********************************
    //==============================================================================
    function GetFileCount(DirName,FileType: string): Integer;
    var DirInfo: TSearchRec;
        DosError: Integer;
    begin
      Result := 0;
      DosError := FindFirst(DirName+'\*.*', FaAnyfile, DirInfo);
      while DosError=0 do
      begin
        if ((DirInfo.Attr and FaDirectory)=faDirectory) and (DirInfo.Name<>'.') and (DirInfo.Name<>'..')
        then Result := Result + GetFileCount(DirName + '\' + DirInfo.Name, FileType);
        {$IF DEFINED(WIN32) AND DECLARED(UsingVCL)}
        if ((DirInfo.Attr and FaDirectory)<>FaDirectory) and ((DirInfo.Attr and FaVolumeID)<>FaVolumeID)
        {$ELSE}
        if ((DirInfo.Attr and FaDirectory)<>FaDirectory)
        {$IFEND}
        then if Trim(FileType)='*.*'
             then Inc(Result)
             else if Pos(UpperCase(Copy(FileType,Pos('*',FileType)+1,Length(FileType)-1)),UpperCase(DirInfo.Name))>0
                  then Inc(Result);
        DosError := FindNext(DirInfo);
      end;
      SysUtils.FindClose(DirInfo);
    end;
      

  3.   

    得到"C:\windows"的所有dll文件(不包括子目录):
    var
      sr : TSearchRec;
      strlst: TStringList;
    begin
      strlst := TStringList.Create;
      if (FindFirst('C:\Windows\*.dll', faAnyFile, sr) = 0) then
      begin
        repeat
           strlst.Add(sr.Name);
        until (FindNext(sr) <> 0);
        FindClose(F);
      end;
      Memo1.Text := strlst.Text;
      strlst.Free;
    end;要获取子目录文件信息的话,可以使用递归进行处理。