先用遍历找出文件(函数FindFirst,FindNext--可查旧贴子,有源码),
然后用RenameFile改名就可以了(也可用SHFILEOPERATION函数).

解决方案 »

  1.   

    文件是否为只读的,如果有先去掉只读属性,再renamefile
    修改文件属性可用SetFileAttributes函数
      

  2.   

    使用Rename()过程,Delphi中的Sample脚本为:
    uses Dialogs;
    var   f : file;
     begin
       OpenDialog1.Title := 'Choose a file... ';
       if OpenDialog1.Execute then begin
         SaveDialog1.Title := 'Rename to...';
         if SaveDialog1.Execute then begin 
           AssignFile(f, OpenDialog1.FileName);
           Canvas.TextOut(5, 10, 'Renaming ' + OpenDialog1.FileName + ' to ' +
             SaveDialog1.FileName);
           Rename(f, SaveDialog1.FileName);
         end;
       end;
     end;
      

  3.   

    我以前做的一个查找文件的子程序,如下:
    procedure TForm1.SearchFile(strDir :string);
    var
      FName:THANDLE;
      strTemp,strTemp1 :string;
      ss :WIN32_FIND_DATA;
    begin
      FName :=FindFirstFile(PChar(strDir),ss);
      if FName <>INVALID_HANDLE_VALUE then begin
        strTemp:=string(ss.cFileName);
        if UpperCase(strTemp) =UpperCase(Edit2.Text) then begin
          strTemp1 :=strDir;
          Delete(strTemp1,length(strTemp1)-2,3);
          ListBox1.Items.Add(strTemp1+strTemp);
          end;
        if strTemp[1] <>'.' then begin
          if ss.dwFileAttributes = FILE_ATTRIBUTE_DIRECTORY then begin
            SearchFile(strDir +strTemp+'\*.*');
            strDir :=strDir +'*.*';
            end;
          end;
        end  else exit;  while FindNextFile(FName,ss)do begin
        strTemp :=string(ss.cFileName);
        if UpperCase(strTemp) =UpperCase(Edit2.Text) then begin
          strTemp1 :=strDir;
          Delete(strTemp1,length(strTemp1)-2,3);
          ListBox1.Items.Add(strTemp1+strTemp);
          end;
        if strTemp[1] <>'.' then begin
          if ss.dwFileAttributes = FILE_ATTRIBUTE_DIRECTORY then begin
            delete(strDir,length(strDir)-2,3);
            SearchFile(strDir +strTemp+'\*.*');
            strDir :=strDir +'*.*';
            end;
          end;
       end;
    end;说明一下:Edit1中放的是目录,格式如 "D:\*.*"
             Edit2中放的是要查找的文件 如"aa.txt"
             ListBox1中放的是查找结果.可以如下调用:
      ListBox1.Clear;
      SearchFile(Edit1.text);
      

  4.   

    改名自己做吧,RenameFile 即可.
      

  5.   

    先用SetFileAttributes函数去掉只读属性,再renamefile