定时删除服务器上的文件夹下的图片,前一段时间做微信公众号开发,请求生成了好多临时二维码,所以想把这些失效的二维码删除掉,以增加服务器上的空间。
首先新建服务
新建项目 -->Windows 服务
之后
protected override void OnStart(string[] args)
{
EventLog.WriteEntry("我的服务启动");//在系统事件查看器里的应用程序事件里来源的描述
writestr("服务启动"); //自定义文本日志
System.Timers.Timer t = new System.Timers.Timer();
t.Interval = 86400000; // 24*60*60*1000
t.Elapsed += new System.Timers.ElapsedEventHandler(ChkSrvs);//到达时间的时候执行事件;
t.AutoReset = true; //设置是执行一次(false)还是一直执行(true);
t.Enabled = true;//是否执行System.Timers.Timer.Elapsed事件;
}
public void ChkSrvs(object source, System.Timers.ElapsedEventArgs e)
{
try
{
System.Timers.Timer tt = (System.Timers.Timer)source;
tt.Enabled = false;
SetInnPoint();
tt.Enabled = true;
}
catch (Exception err)
{
writestr(err.Message);
}
}
public void SetInnPoint()
{
try
{
//这里执行你的东西
DeleteQrCode();
Thread.Sleep(10000);
}
catch (Exception err)
{
writestr(err.Message);
}
}
/// <summary>
/// 每天删除文件夹下的二维码图片
/// 先删除文件夹及下面的所有文件
/// 再创建相同名字的文件夹
/// </summary>
/// <returns></returns>
public void DeleteQrCode()
{
string file = @"C:\Users\kings\Desktop\1";
if (Directory.GetFiles(file).Length == 0)
{
//文件夹为空
writestr("1文件夹已经为空");
}
else
{
writestr("删除1文件夹中的图片文件");
//删除文件夹的数据
Handler.DeleteFolder(file);
}
}
protected override void OnStop()
{
writestr("服务停止");
EventLog.WriteEntry("我的服务停止");
}
删除文件夹下的图片方法
public static void Delete(string dir)
{
foreach (string d in Directory.GetFileSystemEntries(dir))
{
if (File.Exists(d))
{
FileInfo fi = new FileInfo(d);
if (fi.Attributes.ToString().IndexOf("ReadOnly") != -1)
fi.Attributes = FileAttributes.Normal;
File.Delete(d);//直接删除其中的文件
}
else
{
DirectoryInfo d1 = new DirectoryInfo(d);
if (d1.GetFiles().Length != 0)
{
DeleteFolder(d1.FullName);递归删除子文件夹
}
Directory.Delete(d);
}
}
}
写好代码之后设置转回Service1.cs,添加安装程序
如图所示:
设置serviceInstaller1和serviceProcessInstaller1两个的属性
之后生成代码
部署服务:首先要确定电脑有不有InstallUtil.exe
之后windows+r 输入cmd
之后在管理的服务里面
之后启动就可以了
卸载也很方面
在dos里面正常路径下输入stallutil -u kingsunweixin.exe