最近某個用到的第三方程序會產生不少日誌文件在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