第一步:将下面的代码保存到C文件中,编译成一个EXE文件
========================================================
#include <windows.h>
#include <stdio.h>
#define FILENAME ("C:\\123.TXT")
#define SERVICENAME ("定时删除文件")
#define SLEEP_TIME (59*60*1000)//判断时间休眠间隔59分钟
SERVICE_STATUS ServiceStatus
SERVICE_STATUS_HANDLE hStatus
void ServiceMain(int argc, char** argv)
void ControlHandler(DWORD request)
int InitService()
void ControlHandler(DWORD request)
{
switch(request)
{
case SERVICE_CONTROL_STOP:
ServiceStatus.dwWin32ExitCode = 0
ServiceStatus.dwCurrentState = SERVICE_STOPPED
SetServiceStatus (hStatus, &ServiceStatus)
return
case SERVICE_CONTROL_SHUTDOWN:
ServiceStatus.dwWin32ExitCode = 0
ServiceStatus.dwCurrentState = SERVICE_STOPPED
SetServiceStatus (hStatus, &ServiceStatus)
return
default:
break
}
SetServiceStatus (hStatus, &ServiceStatus)
return
}
int InitService()
{
return true
}
void ServiceMain(int argc, char** argv)
{
int error
ServiceStatus.dwServiceType =
SERVICE_WIN32
ServiceStatus.dwCurrentState =
SERVICE_START_PENDING
ServiceStatus.dwControlsAccepted =
SERVICE_ACCEPT_STOP |
SERVICE_ACCEPT_SHUTDOWN
ServiceStatus.dwWin32ExitCode = 0
ServiceStatus.dwServiceSpecificExitCode = 0
ServiceStatus.dwCheckPoint = 0
ServiceStatus.dwWaitHint = 0
hStatus = RegisterServiceCtrlHandler(
SERVICENAME,
(LPHANDLER_FUNCTION)ControlHandler)
if (hStatus == (SERVICE_STATUS_HANDLE)0)
{
return
}
InitService()
ServiceStatus.dwCurrentState =
SERVICE_RUNNING
SetServiceStatus (hStatus, &ServiceStatus)
while (ServiceStatus.dwCurrentState ==
SERVICE_RUNNING)
{
Sleep(SLEEP_TIME)
SYSTEMTIME aTime
::GetLocalTime(&aTime)
if ( aTime.wHour == 12 )
{
DeleteFile(FILENAME)
}
}
return
}
void main(int argc, char* argv[])
{
SERVICE_TABLE_ENTRY ServiceTable[2]
ServiceTable[0].lpServiceName = SERVICENAME
ServiceTable[0].lpServiceProc = (LPSERVICE_MAIN_FUNCTION)ServiceMain
ServiceTable[1].lpServiceName = NULL
ServiceTable[1].lpServiceProc = NULL
StartServiceCtrlDispatcher(ServiceTable)
}
========================================================
第二步:把这个生成的EXE文件拷贝到C:\WINDOWS\SYSTEM32下面
第三步:编写一个BAT文件(批处理文件),内容如下:(假如刚才生成的EXE文件名字为deletefile.exe)
sc create 定时删除文件 binpath= c:\WINDOWS\SYSTEM32\deletefile.exe
net start 定时删除文件
最后:如果想停止定时删除,则可以到系统里面的"服务"中去停止如果想删除服务的话就在CMD对话框中输入:
sc delete 定时删除文件
并运行即可.
要用到windows计划任务和批处理的组合。1.先写一个批处理文件负责删除你建的那个文件夹。新建一个txt文本文件,在里面写上:
@echo 注:例子是如果你想删除C:\123\A文件夹,这里的文件夹路径请按需要修改,然后清空回收站
rd /s /q C:\123\A
attrib -h -s -r "C:\RECYCLER\S-1-5-21-1343024091-57989841-1417001333-500"
rd/s/q "C:\RECYCLER\S-1-5-21-1343024091-57989841-1417001333-500"
将此文档另存为批处理文件,比如叫【删除文件夹.cmd】
2.添加计划任务.
a.单击“开始→所有程序→附件→系统工具”,然后单击“任务计划”。再双击“添加任务计划”图标,双击它。这时候d出一个计划任务对话框。
b.接着我们按照“任务计划向导”的提示,单击“下一步”按钮。这时候会出现很多软件,你可以选择一个要计划执行的软件,这里我们点【浏览】按钮,选择你的批处理文件目录,比如【C:\删除文件夹.cmd】。
c.再点击“下一步”按钮就会让你对这个计划运行限定启动时间,当然你的要求是1个月一次,那就选【每月】。在“下一步”选择什么时候要执行这个任务,当然是根据自己的实际需求来选择。
d.接下来就要对这个计划任务输入密码,就是你的windows登陆密码,当然也可以不用输入,,不过最好输入这样保险。
到一个月你设置的时间点上系统就自动删除你建的那个文件夹。
windows用这个脚本,例如我要删掉D盘test里的一天前的修改文件:forfiles /p "d:\test" /s /m *.* /d -1 /c "cmd /c del @path"
具体你可以百度下forfiles的用法
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)