• 有趣的BAT


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

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

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

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

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

    @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=! 2>nul||ren !xz! "!xz:%%b=!(2)" 2>nul
    ren !xz! !xz:%%b=%%c! 2>nul||ren !xz! "!xz:%%b=%%c!(2)" 2>nul
    )
    title 成功!
    color 0a&cls&echo 重命名成功!
    )
    ping /n 3 127.1>nul

    添加WINDOWS定时重启任务的BAT

    @echo off
    echo ┌────────────────────────┐
    echo │Windows服务器定时重启                           │
    echo └────────────────────────┘
    echo 正在设置……
    rem copy shutdown.exe %windir%system32shutdown.exe
    at 0:20 /every:M %windir%system32shutdown.exe /r
    echo 设置完成,请按任意键退出……
    pause>nul 
  • 相关阅读:
    POJ 1251 Jungle Roads
    ZOJ 1586 QS Network
    51nod 1001 数组中和等于k的数对
    51nod 1298 圆与三角形
    51nod 2006 二分图最大匹配
    HDU 3081 Marriage Match II 二分图最大匹配
    2017 Multi-University Training Contest
    Codeforces Round #427 (Div. 2) D. Palindromic characteristics
    HDU 4280 最大流Dinic算法优化
    POJ 3662 Telephone Lines (分层图做法)
  • 原文地址:https://www.cnblogs.com/relax/p/3714062.html
Copyright © 2020-2023  润新知