본문 바로가기
Borland

폴더내 파일을 모두 찾아 특정 이름으로 변경

by leo21c 2008. 1. 16.
SMALL

http://msdn2.microsoft.com/en-us/library/aa365740.aspx

void __fastcall TMainDataForm::RenameForProductID(AnsiString path, AnsiString add)
{
AnsiString dir, fn;
HANDLE hSrch;
WIN32_FIND_DATA wfd;
bool bResult = true;

int length = path.Length();
if (path[length-1] != '\\') path += "\\";
dir = path + "*.*";
hSrch = FindFirstFile(dir.c_str(), &wfd);
while(bResult) {
if (wfd.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) {}//directory
else { // file
fn = wfd.cFileName;
RenameFile(path+fn, path+add+fn);
}
bResult = FindNextFile(hSrch, &wfd);
}
FindClose(hSrch);
}
//---------------------------------------------------------------------------

void __fastcall TMainDataForm::CopyToSubDirectory(AnsiString path, AnsiString subName)
{
AnsiString dir, fn, subdir;
HANDLE hSrch;
WIN32_FIND_DATA wfd;
bool bResult = true;

int length = path.Length();
if (path[length-1] != '\\') path += "\\";
dir = path + "*.*";
subdir = path + subName + "\\";
DWORD attr = GetFileAttributes(subdir.c_str());
if (!(attr != INVALID_FILE_ATTRIBUTES) && (attr & FILE_ATTRIBUTE_DIRECTORY)) {
if (!CreateDirectory(subdir.c_str(), NULL))
{
Application->MessageBox("The Directory can not be created.", "Warning", MB_OK);;
return;
}
}

hSrch = FindFirstFile(dir.c_str(), &wfd);
while(bResult) {
if (wfd.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) {}//directory
else { // file
fn = wfd.cFileName;
CopyFile((path+fn).c_str(), (subdir+fn).c_str(), false);
}
bResult = FindNextFile(hSrch, &wfd);
}
FindClose(hSrch);
}
//---------------------------------------------------------------------------

LIST