본문 바로가기

C#

C# Winform 개발(자동 전산 파일 삭제 프로그램 )

반응형

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();
        }

       
    }
}

 

윈도우 스케줄러 사용방법

happybono.wordpress.com/2019/10/07/tip-windows-%EC%9E%91%EC%97%85-%EC%8A%A4%EC%BC%80%EC%A4%84%EB%9F%AC%EB%A5%BC-%ED%86%B5%ED%95%B4-%ED%8A%B9%EC%A0%95-%EC%8B%9C%EA%B0%84%EC%97%90-%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%A8-%EC%9E%90%EB%8F%99/

 

[TIP] Windows 작업 스케줄러를 통해 특정 시간에 프로그램 자동 실행하기.

관공서, 공공기관이나 회사 내에서는 업무 효율성을 높이기 위해서, 혹은 기업의 중요 자산 및 보안 데이터의 외부 유출을 차단하기 위해, 직원이 업무와 무관한 일을 업무 시간에 못하도록 통

happybono.wordpress.com

해당 블로그에 잘 나와 있고 만든 프로그램을 등록만 하면된다. 

 

 

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();

코드 수정이 필요하면 언제든지 연락주세요 

반응형