movefile(c:\test\test1\*,d:\temp\test1\) 이렇게 하니깐
이동이 안되네요~
이동하고자 하위 폴더에는 아래와 같이 있구요
c:\test\test1\test2\123.tem
c:\test\test1\test2\567.tem
이동할곳은 c:\test\test1\ 하위 있는 폴더(test2) 와 파일(123.tem,567.tem) 을
d:\temp\test1\ 밑으로 하위 있는 폴더(test2) 와 파일(123.tem,567.tem) 을 이동하고싶어요 ㅠ.ㅠ
movefile 로 하니깐 파일이 있을경우에만 이동을 하네요~ 없으면 이동을 하지 않고 ㅜ.ㅜ
*.* 도 해봤고 * 도 해봤습니다. 그냥 \만 넣어 봤는데도 안되더라구요~
폴더 통으로 이동하는 방법 없나요?
재귀호출해야하지 않을까요??;;음 SearchRec 이용해서~
SHFileOperation으로 강좌나 질답란에서 검색해보세요. 쉽게 하실 수 있습니다.
폴더 채로 옮기는 소스가 있네요..
FolderName -> Source Folder
DestDir -> Target Folder
AddFolder는 ''로 넣어 주시면 됩니다..
procedure Proc_CopyDir(FolderName, DestDir, AddFolder: String);
var
SR: TSearchRec;
attr: Word;
begin
if (FindFirst(FolderName + AddFolder + '\*.*', faAnyFile, Sr)) = 0 then
begin
repeat
if (Sr.Name <> '.') and (Sr.Name <> '..') then
begin
if (SR.Attr and faDirectory) = faDirectory then
begin
if not DirectoryExists(DestDir + AddFolder + '\' + Sr.Name) then
CreateDir(DestDir + AddFolder + '\' + Sr.Name);
ChDir(FolderName + AddFolder + '\' + SR.Name);
Proc_CopyDir(FolderName, DestDir, AddFolder + '\' + SR.Name);
ChDir('..');
end
else
begin
if not DirectoryExists(DestDir + AddFolder) then
Func_Makedir(DestDir + AddFolder);
try
CopyFile(PCHAR(FolderName + AddFolder + '\' + SR.NAME), PCHAR(DestDir + AddFolder + '\' + SR.NAME), FALSE);
if FileExists(DestDir + AddFolder + '\'+SR.NAME) then
begin
attr := FileGetAttr(DestDir + AddFolder + '\' + SR.NAME);
attr := attr and not $00000001;
attr := attr or faArchive;
attr := attr and not faSysFile;
attr := attr and not faHidden;
FileSetAttr(DestDir + AddFolder + '\' + SR.NAME, attr);
end
else
ShowMessage(Sr.Name+'파일이 존재하지 않습니다. 속성 변경 실패!');
except
ShowMessage('파일 복사에 실패했습니다.');
end;
end;
end;
until FindNext(sr) <> 0;
FindClose(sr);
end;
end;
참고로 하위에 있는 test2 라는 폴더는 test3도 있고 test4도 있어요~
test2,test3,test4 각 폴더에 파일들이 있구요 ㅠ.ㅠ