请教各位:
在当前目录下,有多个文件,如何根据其文件名(取其关键字),将带有关键字的系列文件分到(复制到)其他各自不同的目录下?
如:d:\test目录下有“2008年食品安全调查表1.doc”,“2008年食品安全调查表2.doc”,“2008年食品质量调查表.doc”和“2008年食品卫生调查表.doc”三个报表文件;
能否分别根据其文件名的关键字如“2008年食品安全”、“2008年食品质量”和“2008年食品卫生”将他们自动分到三个目录:“食品安全”“食品质量”和“食品卫生”下?
“2008年食品安全调查表1.doc”,“2008年食品安全调查表2.doc”文件 自动分配到“食品安全”目录中;
“2008年食品质量调查表.doc”文件 自动分配到“食品质量”目录中;
“2008年食品卫生调查表.doc”文件 自动分配到“食品卫生”目录中;那位能给看看,帮帮忙。拜托。。谢了

解决方案 »

  1.   

    我的意见是这样的 先把文件名称放到一个listbox里面 for i:=0 to listbox.items.count-1 do 
    begin
    if pos('食品安全',listbox.items[i])<>0 then
      //文件拷贝至食品安全目录
    else if pos('食品质量',listbox.items[i])<>0 then
      //拷贝至食品质量目录
    else if pos('食品卫生',listbox.items[i])<>0
     //拷贝至食品卫生目录 
    end;
      

  2.   

    //没测试
    1.将目录名与目录路径放入结构体
    2.遍历目录
    3.移动文件type
        TDirectory=record
          DirName:string;
          DirPath:string;
        end;
    procedure InitialRecord
    var
      Dir:TDirectory;
    begin
      .............
      .............
      .............
    end;
    procedure SearchDocFile(Path:String);
    var
      SearchRec: TSearchRec;
      I:Integer;
    begin
      ChDir(ExtractFilePath(Path));
      FindFirst(Path, faAnyFile, SearchRec);
      repeat
        if AnsiContainsText(SearchRec.Name,Dir.DirName) then
          MoveFile(PChar(SearchRec.Name),PChar(Dir.DirPath)); //移动文件
      until(FindNext(SearchRec)<>0);
      FindClose(SearchRec);
    end;
      

  3.   


    {给你一个简单的,想扩展什么功能自己研究吧!!!}
    uses shellapi;procedure TForm1.Button1Click(Sender: TObject);
    var
      sr: TSearchRec;
    begin
      if FindFirst('D:\test\*.doc', faAnyFile, sr) = 0 then  {只查找D:\test目录下的doc文件}
      begin
        repeat
          if pos('食品安全',sr.Name)>0 then   {对比文件名和关键了,然后复制}
            CopyFile(pchar('D:\test\'+sr.Name+''),pchar('D:\食品安全\'+sr.Name+''),false)  {false表示替换已存在的文件,ture为不替换}
          else if pos('食品质量',sr.Name)>0 then   {复制后可以用DeleteFile('文件路径')删除源文件}
             CopyFile(pchar('D:\test\'+sr.Name+''),pchar('D:\食品质量\'+sr.Name+''),false)
          else if pos('食品卫生',sr.Name)>0 then
             CopyFile(pchar('D:\test\'+sr.Name+''),pchar('D:\食品卫生\'+sr.Name+''),false);
        until FindNext(sr) <> 0;
        FindClose(sr);
      end;
    end;
      

  4.   

    我的只是复制,也可以像4楼那样,用movefile函数移动文件(相当于剪切)