有趣的BAT

  最近某個用到的第三方程序會產生不少日誌文件在logs目錄中,天天一個log文件,相似 2014-05-07001.log。日積月累這個目錄文件數量很是多,手動清除仍是比較麻煩的。緩存

  因爲這個軟件不是本身開發的,沒法改變log產生機制,因而想到找個BAT放到計劃任務中定時刪除這些文件。服務器

  網上找到幾個BAT都沒法正確運行,估計是別人轉載的時候也沒真正使用過,因而我在別人代碼的基礎上略加修改如今能夠正常運行了:spa

@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窗口就能夠自動關閉了日誌

------------------------------------------------code

從IE緩存目錄中複製出來的文件名老是帶有[1],要批量替換掉[1]能夠用下面這個有趣的BATblog

@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

替換文件名中的任意字符:token

@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%\system32\shutdown.exe
at 0:20 /every:M %windir%\system32\shutdown.exe /r
echo 設置完成,請按任意鍵退出……
pause>nul 
相關文章
相關標籤/搜索