|
rename이나, RenameFile이나 둘다 파라메터에 Full path로 넣어야 합니다.
그렇지 않고, 파일명만 넣으면 Current Directory 기준으로 처리를 하게 됩니다.
rename(c), RenameFile(C++빌더) 함수 말고, 윈도우 API 함수인 MoveFile을 사용해도 됩니다.
그리고, 소스를 보니까, FindFirstFile과 FindNextFile함수의 사용이 조금 잘 못된 부분이 있네요.
hfind = FindFirstFile(....);
if( hfind != INVALID_HANDLE_VALUE ){
do{
// do something
}while( FindNexfFile(...) );
FindClose( hfind ); // 반드시 있어야 함
}
이와 같은 형태로 사용하여야 합니다.
이영섭 님이 쓰신 글 :
:
:
: 그리드에 파일명을 쭉 받아서 한번에 바꾸는 매크로를 만들려고 하는데, 이상하게 파일명이 안바뀌네요.
:
: 볼랜드 2010쓰고있고, 관련부분 소스 올려요.
:
: RenameFile // rename 두개 함수가 둘다 반응이 없는데, 이런경우는 어찌해야하는지 조언 부탁드려요.
:
: //-------
: char str[10] = "";
:
: filehandle = FindFirstFile((Path+"\\*.*").t_str(), &filedata) ;
:
: bool flag;
: for (int i=0; i < sg_Name->RowCount; i++)
: {
: FindNextFile(filehandle, &filedata);
:
: for(int j=0; j < sg_Name->RowCount ; j++)
: {
: if(strcmp(filedata.cFileName , sg_Name->Cells[1][j].t_str())==0)
: {
: sprintf(str, "%d_001",j);
: flag = RenameFile(filedata.cFileName ,str);// sg_Name->Cells[2][j]);
: flag = rename(filedata.cFileName, str); //sg_Name->Cells[2][j].t_str() );
: break;
: }
:
:
: }
: }
: Update();
:
: //----
|