前言:
一朋友维护的一个WINDOWS系统,安装了国内某个相当知名厂商的安全行为设备的日志文件,文件相当的大,生成文件的个数也很多,这个WINDOWS挂载了网络存储,这个安全软件不支持直接将日志写到网络存储的驱动器下,所以,我帮朋友写了个“自动迁移的BAT脚本”,有类似需求的,可参考。
文件:
@echo off
color a
Title 自动迁移日志文件
setlocal enabledelayedexpansion
rem 定义文件源目录
set sourcedir=e:\aaa
rem 定义文件目标路径
set targetdir=f:\bbb
rem 定义源文件保留日志文件数
set xfile=5
rem 定义脚本运行时间间隔(单位:秒)
set wtime=600
rem 定义文件格式匹配
set fileformat=*.gif
set ext=gif
:start
for /f %%w in ('"dir /T/OD %sourcedir%\%fileformat% |findstr "%ext%""') do (
set/a %i+=1
)
set/a allfiles=%i%
set/a loops=%i%-%xfile%
echo 当前时间:%date% %time%
echo 提示:保留最新创建的%xfile%个文件,源目录%sourcedir%中其他文件将迁移%targetdir%目录中.....
echo.
if %loops% LEQ 0 echo "暂无要迁移的文件!"
for /f " tokens=1,2,3,4" %%a in ('"dir /T/OD %sourcedir%\%fileformat% |findstr "%ext%""') do (
set/a %y+=1
if !y! LEQ %loops% move/Y %sourcedir%\%%d %targetdir% && echo "%sourcedir%:%%d -------->%targetdir%"
)
ping 127.0.0.1 -n %wtime% >%sourcedir%\null
goto :start
补充说明:
1)网上有直接软件或破解软件来实现自动迁移/启动备份功能,但多数限于一天的某个时间,支持一天内多次运行的软件很少;
2)有的朋友可能是考虑用文件名通配来实现,但是在WINDOWS下,因为系统时间显示的格式不好确定,所以实现上很有点麻烦;
3)本脚本主要通过产生的文件时间为参考,只在源文件夹中保留指定个数的最新生成的文件,将其他的文件全部进行迁移。
阅读(1624) | 评论(1) | 转发(0) |