最近某个用到的第三方程序会产生很多日志文件在logs目录中,每天一个log文件,类似 2014-05-07001.log。日积月累这个目录文件数量非常多,手动清除还是比较麻烦的。

  由于这个软件不是自己开发的,无法改变log产生机制,于是想到找个BAT放到计划任务中定时删除这些文件。

  网上找到几个BAT都无法正确运行,估计是别人转载的时候也没真正使用过,于是我在别人代码的基础上略加修改现在可以正常运行了:

@echo off&setlocal enabledelayedexpansion
set ds=7
set di=d:\Soft\logs
set "dy=%date:~,4%"
set "dm=%date:~5,2%"
set "dd=%date:~8,2%"
echo 当前日期为:%dy%年%dm%月%dd%日
echo.
if %dm:~,1%==0 set "dm=%dm:~1%"
if %dd:~,1%==0 set "dd=%dd:~1%"
set/a "dd-=ds"
if !dd! gtr 0 goto ok
echo 正在计算%ds%天前的日期...
:ry
set /a "feb=^!(!dy!&3)+28"
if "%dy:~2,2%" equ "00" set/a "feb=feb-1+^!(dy:~,2&3)"
if %feb%==29 echo %dy%年是闰年
echo.
:tyt
set n=0
set/a "dm-=1"
if %dm% equ 0 (
set/a "dy-=1,dm=12,dd+=31"
if %dd% gtr 0 (goto ok )else goto ry )
for %%a in (31 %feb% 31 30 31 30 31 31 30 31 30 31) do (
set/a n+=1
if !n! equ %dm% set/a "dd+=%%a")
if %dd% leq 0 goto tyt
:ok
set/a "ymd=dy*10000+dm*100+dd"
echo.
echo 前%ds%天的日期是%ymd:~,4%年%ymd:~4,2%月%ymd:~6,2%日
echo 正在获取文件日期再进行比较
echo 并删除%ds%天前创建并且%ds%天内未修改过的文件...
cd/d "%di%"
for /f "delims=" %%i in ('dir/a/a-d/b')do ( Set "strymdx=%%~ti%"
Set "xdy=!strymdx:~,4!"
Set "xdm=!strymdx:~5,2!"
Set "xdd=!strymdx:~8,2!"
Set "ymdx=!xdy!!xdm!!xdd!" Rem set ymdx=!ymdx~,4!!ymdx~5,2!!ymdx~8,2!
echo %%i,ymd=%ymd%,ymdx=!ymdx!,ti=%%~ti
if !ymdx! lss %ymd% (
if "%%i" neq "%~nx0" del/f "%%i"))
echo.
echo 处理完毕!即将退出...
@pause

自动运行的时候请将最后一行的@pause 去掉,这样cmd窗口就可以自动关闭了

------------------------------------------------

从IE缓存目录中复制出来的文件名总是带有[1],要批量替换掉[1]可以用下面这个有趣的BAT

@echo off
title 清除缓存中复制出来的文件名中[]字符!
setlocal EnableDelayedExpansion
set wkdxz=[]
for /f "usebackq delims=/ tokens=1,2" %%b in ('%wkdxz%') do (
for %%a in (*) do (
set xz=%%a
if "%%c"=="" ren !xz! !xz:%%b=! >nul||ren !xz! "!xz:%%b=!(2)" >nul
ren !xz! !xz:%%b=%%c! >nul||ren !xz! "!xz:%%b=%%c!(2)" >nul
)
title 成功!
color 0a&cls&echo 重命名成功!
)
del %

替换文件名中的任意字符:

@echo off
title 请按提示输入字符!
setlocal EnableDelayedExpansion
echo.
echo 要把字符"a"替换成字符"b" 请输入a/b
echo.
set /p wkdxz= 要去掉字符a就直接输入a
for /f "usebackq delims=/ tokens=1,2" %%b in ('%wkdxz%') do (
for %%a in (*) do (
set xz=%%a
if "%%c"=="" ren !xz! !xz:%%b=! >nul||ren !xz! "!xz:%%b=!(2)" >nul
ren !xz! !xz:%%b=%%c! >nul||ren !xz! "!xz:%%b=%%c!(2)" >nul
)
title 成功!
color 0a&cls&echo 重命名成功!
)
ping /n 127.1>nul

添加WINDOWS定时重启任务的BAT

@echo off
echo ┌────────────────────────┐
echo │Windows服务器定时重启 │
echo └────────────────────────┘
echo 正在设置……
rem copy shutdown.exe %windir%\system32\shutdown.exe
at : /every:M %windir%\system32\shutdown.exe /r
echo 设置完成,请按任意键退出……
pause>nul

有趣的BAT的更多相关文章

  1. winform总结3> 有趣的bat/winform程序完成自己的任务,然后把自己删除

    在winform的开发过程中往往会有这样的应用场景,执行完成某任务之后,程序需要把本身删除掉.比如卸载.分享一个比较简单实现. 思路就是利用批处理,关闭文件后执行bat,bat执行删除主文件,然后删除 ...

  2. 各种有趣vbs,bat脚本

    短信轰炸.vbs Dim btn,ie Set ie = WScript.CreateObject("InternetExplorer.Application") ie.Visib ...

  3. BAT批处理(一)

    本文摘自博文<BAT批处理文件教程> 这是一篇技术教程,我会用很简单的文字表达清楚自己的意思,只要你识字就能看懂,就能学到知识.写这篇教程的目的,是让每一个看过这些文字的朋友记住一句话:如 ...

  4. 自己写的browse.bat与perl写的url_handler.pl的比较

    以前自己也写过Windows下自动打开多个浏览器测试某个URI,提高浏览器兼容性测试效率. 但是写的browse.bat文件还是最基础简陋的 @echo off if '%1'=='-c' ( sta ...

  5. 批处理最完整人性化教程(.bat文件语法)

    原文链接:http://www.cnitblog.com/seeyeah/archive/2009/01/15/53808.html 这是一篇技术教程,我会用很简单的文字表达清楚自己的意思,你要你识字 ...

  6. 一辈子只有1次成为BAT的机会,你如何把握?

    本文转自:http://www.fmi.com.cn/index.php?m=content&c=index&a=show&catid=9&id=614308 感谢作者 ...

  7. BAT编程

    echo 表示显示此命令后的字符  echo off 表示在此语句后所有运行的命令都不显示命令行本身  @与echo off相象,但它是加在每个命令行的最前面,表示运行时不显示这一行的命令行(只能影响 ...

  8. 数百道BAT等大厂最新Python面试真题,学到你手软!

    春招临近,无论是要找工作的准毕业生,还是身在职场想要提升自己的程序员,提升自己的算法内功心法.提升 Python 编程能力,总是大有裨益的.今天,小编发现了一份好资源:Python 实现的面试题集锦! ...

  9. 解密国内BAT等大厂前端技术体系-腾讯篇(长文建议收藏)

    1 引言 为了了解当前前端的发展趋势,让我们从国内各大互联网大厂开始,了解他们的最新动态和未来规划.这是解密大厂前端技术体系的第三篇,前两篇已经讲述了阿里和百度在前端技术这几年的技术发展.这一篇从腾讯 ...

随机推荐

  1. docker push到本地仓库失败

    开启registry的方法: docker run -d -p : -v /data/registry:/tmp/registry registry 出错内容: Error: Status tryin ...

  2. 全排列 UVA 11525 Permutation

    题目传送门 题意:训练指南P248 分析:逆向考虑,比如一个全排列:7345261,它也可以表示成题目中的形式,第一个数字7是由6 * (7 - 1)得到的,第二个数字3有2 * (7 - 2)得到, ...

  3. HIT2715 Matrix3(最小费用最大流)

    题目大概说有一个n×n的矩阵,每个格子都有权值和高度,在这个矩阵中进行最多k次旅行,每次旅行能从当前格子走到相邻且高度更小的格子,走到格子边界就能出去完成这次旅行.每走到一个格子就累加格子的权值然后把 ...

  4. EF框架step by step(7)—Code First DataAnnotations(1)

    Data annotation特性是在.NET 3.5中引进的,给ASP.NET web应用中的类提供了一种添加验证的方式.Code First允许你使用代码来建立实体框架模型,同时允许用Data a ...

  5. 【SAP BO】BOE 4.1版本新特性

    为了更好地向用户推广BusinessObjects BI 4.1版本的新特性,SAP公司宣布将在2012年中旬推出针对BusinessObjects BI 4.0的功能补丁程序(Feature Pac ...

  6. BZOJ1931 : [Shoi2007]Permutation 有序的计数

    枚举LCP以及下一位变小成什么,统计出剩下的有几个可以在原位置. 然后枚举剩下的至少有几个在原位置,容斥计算答案. 时间复杂度$O(n^3)$. #include<cstdio> type ...

  7. BZOJ2769 : YY的快速排序

    将数字离散化并去重,则对于一对逆序对$i<j$,$a_i>a_j$,贡献为$\frac{2}{a_i-a_j+1}$,因此只要对于每个差值统计出对应的逆序对个数即可. 将序列分块,块内平方 ...

  8. 洛谷 P1015 回文数 Label:续命模拟QAQ

    题目描述 若一个数(首位不为零)从左向右读与从右向左读都一样,我们就将其称之为回文数. 例如:给定一个10进制数56,将56加65(即把56从右向左读),得到121是一个回文数. 又如:对于10进制数 ...

  9. 【Java】RuleSource约束常用方法整理

    1-常用约束规则RuleSource的设置方法   例如: addRules(new Rules(ProgramFeeItem.class){ protected void initRules() { ...

  10. JDBC学习笔记1

    JDBC(java database connectivity)一.基于socket+数据库底层协议java sun ------标准(接口)java.sql.*;jdbc sun公司为了方便连接数据 ...