1. 매일 생성되는 엑셀 파일을 주기적으로 삭제할 수 있는 프로그램이 필요하다.
2. 삭제는 작업이 이루어 지지 않는 새벽 시간에 삭제가 되어야한다.(윈도우 스케줄러 사용)
3. 사용자가 UI를 확인했을 때 삭제된 사실을 확인 할 수 있어야 한다.
4. 현재 날짜 기준으로 하루 전 원하는 루트 안에 생성된 파일를 삭제한다.
5. 작업자 및 현장 인원이 임의로 프로그램을 작동하는 일이 없어야 한다.
UI는 직관적일 수 있도록 최대한 간단하게 만들었다.
타이머 Tick 이벤트를 사용하였다.
우선 지울 파일의 루트를 선언하였고
DateTime 을 사용하여 현재 날짜를 담을 변수를 선언하였다.
해당 변수를 담을 deleteOldfiles(deleteOldfiles(excelFolderPath, nowTime);
메서드를 만들었다.
DirectoryInfo excelPathInfoDirectoryInfo excelPathInfo = new DirectoryInfo(excelFolderPath);
통해서 루트를 가져와 excelPathInfo.GetFiles()를 통해 해당 루트 안에 있는 파일을 하나씩 가져 오고
DateTime.Compare(exfileCreationTime , DtnowTime) <0
비교를 했을 때 DtnowTime (현재 날짜) 가 더 클때 File.Delete 함수가 작동되도록 만들었다.
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace WindowsFormsApp1
{
public partial class DeleteExcel : Form
{
public DeleteExcel()
{
InitializeComponent();
}
private void excelDeleteTMR_Tick(object sender, EventArgs e)
{
//엑셀 파일 위치
string excelFolderPath = @"C:\Users\admin\Desktop\test";
//현재 날짜
string nowTime = DateTime.Now.ToString("yyyyMMdd");
TB_NowDate.Text = DateTime.Now.ToString("yyyy-MM-dd");
//생성된 파일 삭제 메서드 실행
excelDeleteTMR.Enabled = false;
try
{
deleteOldfiles(excelFolderPath, nowTime);
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
excelDeleteTMR.Enabled = true;
}
private void deleteOldfiles(string excelFolderPath, string nowTime)
{
//파일 경로 담는 클래스 DirectoryInfo
DirectoryInfo excelPathInfo = new DirectoryInfo(excelFolderPath);
DateTime exfileCreateTime;
//nowTime (string) ->DtnowTime (DateTime) 형변환
DateTime DtnowTime = DateTime.ParseExact(nowTime, "yyyyMMdd", null);
//해당 경로 파일 가져오는 foreach 문
foreach (FileInfo excelfiles in excelPathInfo.GetFiles())
{
exfileCreateTime = excelfiles.CreationTime; //파일 생성된 시간
TB_ExcelCreate.Text = exfileCreateTime.ToString();
//엑셀파일 생성 시간과 현재 시간 비교 조건문
if (DateTime.Compare(exfileCreateTime, DtnowTime) <0)
{
File.Delete(excelfiles.FullName);
}
else
{
TB_Boolen.Text = "파일 제거 완료";
}
}
}
private void Form1_FormClosing(object sender, FormClosingEventArgs e)
{
excelDeleteTMR.Stop();
}
private void Form1_Shown(object sender, EventArgs e)
{
Application.DoEvents();
excelDeleteTMR_Tick(sender, e);
excelDeleteTMR.Start();
}
}
}
윈도우 스케줄러 사용방법
해당 블로그에 잘 나와 있고 만든 프로그램을 등록만 하면된다.
1.Application.Exit();
#2
1.Application.ExitThread();
2.Environment.Exit(0);
#3 그래도 안죽으면 강제로 Process Kill !!
1.
System.Diagnostics.Process[] mProcess = System.Diagnostics.Process.GetProcessesByName(Application.ProductName);
2.
foreach (System.Diagnostics.Process p in mProcess)
3.
p.Kill();
코드 수정이 필요하면 언제든지 연락주세요
'C#' 카테고리의 다른 글
C# 문법- List<T>/ArrayList (0) | 2023.03.02 |
---|---|
C# 기초 문법 -오버라이딩 /오버로딩/ 추상클래스,메서드/인터페이스-다중상속/ (0) | 2023.02.28 |
C# - 소수인지 아닌지 판별하는 알고리즘! (0) | 2023.02.23 |
C# 문법- INDEXER (FEAT PROPERTY) (0) | 2023.02.21 |
C# - 데스크탑 WinForm/GITHUB 사용법 (0) | 2023.02.21 |
C# - 프로퍼티 문법/상속 복습(0603) (1) | 2023.02.21 |