bat批处理删除日志文件

公司的程序猿写的软件只管生成日志,却没写删除过期的日志,时间久了日志文件非常多,占用大量空间,写这个是为了方便手动删除日志文件。目前还没有思路写自动搜索并生成日志目录表的批处理,比如说全盘搜索包含log的,以后再搞吧。
参考:《BAT批处理定期删除清理指定N天前的文件》

删除前N天日志文件 [无需确认,第一次慎用]

使用说明:

  1. 复制下面的代码,粘贴到txt文件,文件名称随意(代码会自动修改),修改后缀为bat。

  2. 使用时需要自行创建**《日志目录表.txt》**,和bat文件放在一起即可。在这里插入图片描述

  3. 日志目录表.txt中填写需要删除的日志文件所在文件夹的路径。每一行填写一个文件夹的路径。在这里插入图片描述

  4. 指定天数,是指需要删除多少天以前的文件。例如代码中填的是100,就会删除100天前的文件。这里的数值修改后,运行时bat文件名称会同步改变。

  5. 运行过程中会在桌面生成一个统计删除文件信息的文件,不用管它,代码运行结束时会自动删除的。

  6. 注意:批处理删除的文件,不可恢复,使用时要小心别删错了。

:: 复制下面的代码,粘贴到txt文件,修改后缀为bat,双击运行即可。
@echo off
SETLOCAL enabledelayedexpansion
title Delete files from %DaysAgo% days ago
set "a=%1"

:: 指定天数(0~32767),0代表所有日期的文件。
if "%a%"=="" set DaysAgo=100

if not exist "%~dp0删除前%DaysAgo%天文件 [第一次慎用].bat" (
ren "%~f0" "删除前%DaysAgo%天文件 [第一次慎用].bat"
call "%~dp0删除前%DaysAgo%天文件 [第一次慎用].bat" %DaysAgo%
)

echo,
echo,########## Starting deleting ##########

for /f "eol=# tokens=*" %%i in (日志目录表.txt) do (
echo,===============================================
echo,Starting deleteing files in the [%%i] directory that are %DaysAgo% days old.
if exist "%%i" (
forfiles /p "%%i" /s /m *.* /c "cmd /c del /f /q /a @path&&echo,[deleted]@path&&echo,@path=@fsize>>%userprofile%\fileinfo.log" /d -%DaysAgo%
) else ( echo,[%%i] File directory does not exist)
)

set count_fn=0
set count_fs=0
for /f "delims== tokens=1,2" %%a in (%userprofile%\fileinfo.log) do (
set /a count_fn+=1
set /a count_fs+=%%b
)
set /a count_fs/=1024

echo,
echo,Total deletions this time:%count_fn% files,%count_fs%KB。
echo,
echo,########## End of deletion ##########

del "%userprofile%\fileinfo.log"
pause>nul

删除前N天日志文件 [另外一个版本]

使用说明:

这个是比较安全的删除方法,使用方法大同小异。
每次删除一个路径中的文件前,会先打开文件夹看下,确认好后再决定是否删除,在命令提示符输入y或者n。
用起来比较麻烦。

@echo off
SETLOCAL enabledelayedexpansion
title 删除%DaysAgo%天前的文件
set "a=%1"

:: 指定天数
echo,
if "%a%"=="" set /p DaysAgo=.    指定删除天数(0~32767,0代表所有日期)if not exist "%~dp0删除前%DaysAgo%天文件.bat" (
ren "%~f0" "删除前%DaysAgo%天文件.bat"
call "%~dp0删除前%DaysAgo%天文件.bat" %DaysAgo%
)

echo,
echo,########## 删除日志开始 ##########

for /f "eol=# tokens=*" %%i in (日志目录表.txt) do (
echo,
echo,===开始删除 [%%i] 目录中%DaysAgo%天前的日志文件===

if exist "%%i" (
start "" "%%i"
color 0c
choice /m "请确认此目录中日志文件是否删除"
if !errorlevel! equ 1 (
color 07
forfiles /p "%%i" /s /m *.* /c "cmd /c del /f /q /a @path&&echo,[已删除]@path&&echo,@path=@fsize>>%userprofile%\fileinfo.log" /d -%DaysAgo%
)
) else ( echo,[%%i] 目录不存在)
echo,=============================完成=============================
)

set count_fn=0
set count_fs=0
for /f "delims== tokens=1,2" %%a in (%userprofile%\fileinfo.log) do (
set /a count_fn+=1
set /a count_fs+=%%b
)
set /a count_fs/=1024
echo,
echo,本次共删除:%count_fn%个文件,%count_fs%KB。
echo,
echo,########## 删除日志结束 ##########

del "%userprofile%\fileinfo.log"
pause>nul
  • 0
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值