//+------------------------------------------------------------------+
//| Demo_FolderClean.mq5 |
//| Copyright 2000-2024, MetaQuotes Ltd. |
//| https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2000-2024, MetaQuotes Ltd."
#property link "https://www.mql5.com"
#property version "1.00"
//--- 설명
#property description "이 스크립트는 FolderClean()의 샘플 사용을 보여 줍니다."
#property description "먼저 FileOpen() 함수를 사용하여 지정된 폴더에 파일을 생성합니다."
#property description "그런 다음 파일을 삭제하기 전에 MessageBox()를 사용하여 경고를 표시합니다."
//--- 스크립트를 시작할 때 입력 파라미터 대화 상자 표시
#property script_show_inputs
//--- 입력 파라미터
input string foldername="demo_folder"; // MQL5/Files/ 에 폴더 생성
input int files=5; // 생성 및 삭제할 파일 수
//+------------------------------------------------------------------+
//| 스크립트 프로그램 시작 함수 |
//+------------------------------------------------------------------+
void OnStart()
{
string name="testfile";
//--- 터미널 데이터 폴더에서 먼저 파일 열기 또는 생성
for(int N=0;N<files;N++)
{
//--- 'demo_folder\testfileN.txt'의 형태의 파일명
string filemane=StringFormat("%s\\%s%d.txt",foldername,name,N);
//--- 쓰기 플래그가 있는 파일을 엽니다. 이 경우 'demo_folder'가 자동으로 생성됩니다.
int handle=FileOpen(filemane,FILE_WRITE);
//--- FileOpen() 기능이 성공적이었는지 확인
if(handle==INVALID_HANDLE)
{
PrintFormat("%s 파일 생성 실패. Error code",filemane,GetLastError());
ResetLastError();
}
else
{
PrintFormat("파일 %s이 성공적으로 열렸습니다",filemane);
//--- 열려 있는 파일은 더 이상 필요하지 않으므로 닫으십시오
FileClose(handle);
}
}
//--- 폴더의 파일 수 확인
int k=FilesInFolder(foldername+"\\*.*",0);
PrintFormat("폴더 %s에 모두 %d 파일이 포함되어 있습니다",foldername,k);
//--- 사용자에게 묻는 대화 상자 표시
int choice=MessageBox(StringFormat("폴더 %s에서 파일 %d를 삭제하려고 하십니다. 계속 하시겠습니까?",foldername,k),
"폴더에서 파일 삭제",
MB_YESNO|MB_ICONQUESTION); // 2개 버튼 - "예" 및 "아니오"
ResetLastError();
//--- 선택한 변수모에 따라 작업 실행
if(choice==IDYES)
{
//--- 파일 삭제 시작
PrintFormat("폴더 %s에서 모든 파일 삭제 시도",foldername);
if(FolderClean(foldername,0))
PrintFormat("파일이 모두 삭제되어, %s 폴더에 %d 파일이 남았습니다",
foldername,
FilesInFolder(foldername+"\\*.*",0));
else
PrintFormat("폴더 %s에서 파일 삭제 실패. Error code %d",foldername,GetLastError());
}
else
PrintFormat("삭제 취소됨");
//---
}
//+------------------------------------------------------------------+
//| 지정된 폴더의 파일 수를 반환합니다 |
//+------------------------------------------------------------------+
int FilesInFolder(string path,int flag)
{
int count=0;
long handle;
string filename;
//---
handle=FileFindFirst(path,filename,flag);
//--- 하나 이상의 파일이 발견되면 추가 파일 검색
if(handle!=INVALID_HANDLE)
{
//--- 파일명 보기
PrintFormat("%s 파일 발견",filename);
//--- 파일/폴더 발견 카운터 증가
count++;
//--- 모든 파일/폴더에서 탐색
while(FileFindNext(handle,filename))
{
PrintFormat("%s 파일 발견",filename);
count++;
}
//--- 완료 시 검색 핸들을 닫는 것을 잊지 마십시오
FileFindClose(handle);
}
else // 핸들 가져오기 실패
{
PrintFormat("폴더 %s에서 파일 탐색 실패",path);
}
//--- 결과 반환
return count;
}
|