大家上午好,公司刚交给一任务:情况是这样,就是一文件夹下有许多东西,我现在是想就改这文件夹的名字,名字改为在已有基础上添加几个字母就可以了,例如原文件名为:400-91,需该为SH-400-91。因为文件太多,不知有没有简单的方法(有程序更好,提供程序者可开贴再加100分)。在此先谢谢大家了。谢谢!!
分不够可再加!!

解决方案 »

  1.   

    ?
    楼主不是都问了么?
    http://community.csdn.net/Expert/topic/3277/3277524.xml?temp=.450802
      

  2.   

    以下是我的全部源码,测试通过,完全满足楼主要求。
    procedure TForm1.Button1Click(Sender: TObject);
    var
      sr : TSearchRec;
    const
      s = 'c:\Rename'; //把所有要改名的都放在这个文件夹下,根据你的情况修改。
    begin
      if DirectoryExists(s) then
      begin
        if FindFirst(s+'\*.*', faAnyFile, sr) = 0 then
        begin
          repeat
            if (sr.Attr and faAnyFile) = sr.Attr then
            begin
              if (sr.Attr=faDirectory) and (sr.Name<>'.') and
                (sr.Name<>'..') then
                   RenameFile(s+'\'+sr.Name, s+'\SH-'+ sr.Name);
            end;
          until FindNext(sr) <> 0
        end;
        FindClose(sr);
      end;
    end;
      

  3.   

    procedure TForm1.Button1Click(Sender: TObject);
    var
      sr : TSearchRec;
      ts : TStringList;
      i : Integer;
    const
      s = 'c:\gyj\'; //把所有要改名的都放在这个文件夹下,根据你的情况修改。
    begin
      if DirectoryExists(s) then
      begin
        ts := TStringList.Create;
        try
          if FindFirst(s+'*.*', faDirectory , sr) = 0 then
          begin
            repeat
              if (sr.Attr and faDirectory ) = sr.Attr then
              begin
                if (sr.Name<>'.') and (sr.Name<>'..') then
                  ts.Add(sr.Name);
              end;
            until FindNext(sr) <> 0
          end;
          FindClose(sr);      if ts.Count > 0 then
            for i := 0 to ts.Count - 1 do
              if DirectoryExists(s+ts.Strings[i]) then
                RenameFile(s+ts.Strings[i],s+'SH-'+ts.Strings[i]);
        finally
          ts.Free;
        end;
      end;
    end;
      

  4.   

    function TfrmMain.RenDirectory(const OldName,NewName:  string): boolean;
    var
      fo: TSHFILEOPSTRUCT;
    begin
      FillChar(fo, SizeOf(fo), 0);
      with fo do
      begin
        Wnd := 0;
        wFunc := FO_RENAME;
        pFrom := PChar(OldName+#0);
        pTo := pchar(NewName+#0);
        fFlags := FOF_NOCONFIRMATION+FOF_SILENT;
      end;
      Result := (SHFileOperation(fo) = 0);
    end;
      

  5.   

    procedure TForm1.Button1Click(Sender: TObject);
    var
      sr : TSearchRec;
      ts : TStringList;
      i : Integer;
    const
      s = 'c:\gyj\'; //把所有要改名的都放在这个文件夹下,根据你的情况修改。
    begin
      if DirectoryExists(s) then
      begin
        ts := TStringList.Create;
        try
          if FindFirst(s+'*.*', faDirectory , sr) = 0 then
          begin
            repeat
              if (sr.Attr and faDirectory ) = sr.Attr then
              begin
                if (sr.Name<>'.') and (sr.Name<>'..') then
                  ts.Add(sr.Name);
              end;
            until FindNext(sr) <> 0
          end;
          FindClose(sr);      if ts.Count > 0 then
            for i := 0 to ts.Count - 1 do
              if DirectoryExists(s+ts.Strings[i]) then
                RenameFile(s+ts.Strings[i],s+'SH-'+ts.Strings[i]);
        finally
          ts.Free;
        end;
      end;
    end;