- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在寻找可以帮助我制定计划任务以自动将日志文件移动到 RAR 存档中的人。
它不一定是批处理文件解决方案,如果您有其他想法,请分享。
我得到了它的基本代码。这是我到目前为止的批处理文件代码:
"C:\Program Files\WinRAR\rar.exe" a -ag -ms "D:\tet\Web3811\Web3811\LogsBackup\" @backup.txt
批处理文件中的那一行运行 RAR 以创建一个存档,其中包含列表文件 backup.txt
中指定文件夹中的所有文件,其中包含:
D:\tet\Web3811\Web3811\log
RAR 压缩包创建在 D:\tet\Web3811\Web3811\LogsBackup\
中,文件名为 yyyy-mm-dd.rar
。
我需要帮助:
dd-mm-yyyy
而不是 yyyy-mm-dd
。之所以是批处理文件,是因为需要按计划任务执行。
第三个要求的示例:
该文件夹包含 5 个日志文件,最后修改日期如下:
Oldest.log 23-07-2014 02:20:54
AlsoOld.log 23-07-2014 23:52:26
Sample1.log 25-07-2014 09:08:46
Sample2.log 25-07-2014 12:59:02
Newest.log 26-07-2014 18:32:48
定时任务需要创建3个归档,名称和文件如下:
23-07-2014_Logs.rar
包含 Oldest.log
和 AlsoOld.log
。25-07-2014_Logs.rar
包含 Sample1.log
和 Sample2.log
。26-07-2014_Logs.rar
仅包含 Newest.log
。24-07-2014 没有创建日志文件,因此也没有为这一天创建 RAR 存档。
最佳答案
我建议在批处理文件中使用:
"C:\Program Files\WinRAR\rar.exe" mf -ac -ao -agDD-MM-YYYY-NN -ep1 -idq -m5 -to7d -y "D:\tet\Web3811\Web3811\LogsBackup\Logs_" @backup.txt
以上命令移动所有超过 7 天的文件根据上次修改日期到一个 RAR 压缩文件中,其名称以 Logs_
开头,当前日期以请求的格式和一个额外的递增以连字符后的数字 1 开头的数字,以防一天多次运行此命令行。
只有具有存档属性的文件才会被移动到存档中。归档文件后,归档属性会被清除,即使删除是不可能的,例如当另一个应用程序打开了带有写锁的文件时。 RAR 根本不会删除读取和压缩数据失败的文件(读取锁定)。
请参阅 WinRAR 程序文件夹中的文本文件 Rar.txt 以了解此命令行中使用的所有开关的说明。
在更好地解释了一些要求之后,这里是一个批处理文件,用于创建最终要求的存档文件。
@echo off
setlocal EnableExtensions EnableDelayedExpansion
rem Define the directories to use for backup task.
set "LogDirectory=D:\tet\Web3811\Web3811\log"
set "BakDirectory=D:\tet\Web3811\Web3811\LogsBackup"
rem Get all file names in log directory into a list file sorted by last
rem modification date with oldest file at top and newest at bottom.
rem Note: /S is important to get the file names with complete path.
dir "%LogDirectory%\*" /A-D /B /OD /S /TW 1>"%BakDirectory%\LogFiles.lst" 2>nul
rem Jump to clean up stage if no file found in the log directory.
if errorlevel 1 goto :CleanUp
rem Delete list file for all files with same day if file exists
rem for example from a previous execution of this batch file
rem which was terminated manually by a user during execution.
if exist "%BakDirectory%\DayFiles.lst" del "%BakDirectory%\DayFiles.lst"
set LastDate=none
for /F "usebackq delims=" %%F in ( "%BakDirectory%\LogFiles.lst" ) do (
set FileTime=%%~tF
rem Get just file date from file time in format DD-MM-YYYY.
rem The file time string format depends on date and time
rem format definition in Windows language settings.
rem Therefore the line below must be adapted if date format
rem is whether DD.MM.YYYY nor DD-MM-YYYY nor DD/MM/YYYY.
set FileDate=!FileTime:~0,2!-!FileTime:~3,2!-!FileTime:~6,4!
rem Is the last modification date of this file different
rem to last modification date of the previous file?
if not "!FileDate!"=="!LastDate!" (
rem Nothing to archive on first difference.
if not "!LastDate!"=="none" call :ArchiveLogs
rem Exit loop if RAR has not archived any file which means
rem all other files are modified within the last 7 days.
if "!LastDate!"=="ExitLoop" goto CleanUp
rem Start creating a new list.
set LastDate=!FileDate!
)
rem Append name of this file with path to current day list.
echo %%F>>"%BakDirectory%\DayFiles.lst"
)
rem Jump to clean up stage if no list file with files to archive.
if not exist "%BakDirectory%\DayFiles.lst" goto CleanUp
rem Otherwise with no log file created or modified within
rem the last 7 days, but at least one older file exists
rem nevertheless, archive all those files in list file.
call :ArchiveLogs
:CleanUp
del "%BakDirectory%\LogFiles.lst"
endlocal
goto :EOF
:ArchiveLogs
rem Move all files in the list file older than 7 days without
rem path using best compression into a RAR archive with last
rem modification date of archived file(s) in RAR file name.
"C:\Program Files\WinRAR\Rar.exe" mf -ep1 -idq -m5 -to7d -y "%BakDirectory%\!LastDate!_Logs.rar" "@%BakDirectory%\DayFiles.lst"
rem Exit FOR loop above if no file archived because
rem no file in the list file is older than 7 days.
if errorlevel 10 set LastDate=ExitLoop
del "%BakDirectory%\DayFiles.lst"
我首先想到,如果不编写一个小型控制台应用程序来创建每个日期的文件列表并忽略过去 7 天内未修改的文件,就不可能做到这一点。但后来我想到了如何仅使用批处理文件和 RAR 来解决这个主要问题,如上所示。
最好在午夜过后使用计划任务运行此批处理文件,因为 RAR 还会考虑“超过 7 天”的当前时间,而不仅仅是日期。
但是如果批处理文件在例如18:00 执行并且有在23:00 分别创建和修改的日志文件则没有问题。在这种情况下,最后修改日期在 18:00 之前并且与当前日期相比刚好在 7 天之前的日志文件首先被移动到 RAR 存档中,第二天,其他日志文件最后修改时间在 18:00 之后从同一个日期也被移动到该日期的 RAR 存档中。
始终在 18:00 执行批处理任务的示例以及发生的情况。
有日志文件
FirstSundayAugust2014_1.log 03/08/2014 15:23
FirstSundayAugust2014_2.log 03/08/2014 23:48
计划任务在 2014 年 8 月 10 日星期日 18:00 运行。
批处理文件将 FirstSundayAugust2014_1.log
移动到 RAR 存档 03-08-2014_Logs.rar
,但另一个日志文件 FirstSundayAugust2014_2.log
上周日的内容也保留在目录中。
2014 年 8 月 11 日星期一 18:00,批处理文件也将 FirstSundayAugust2014_2.log
移动到 RAR 存档 03-08-2014_Logs.rar
中,此存档包含现在分别创建的两个日志文件最后修改于 2014 年 8 月的第一个星期日。
再补充一点:
在我看来,日期格式为 DD-MM-YYYY 的 RAR 文件名并不是很好。最好是 YYYY-MM-DD,因为这会导致 *.rar 文件,其中那些 RAR 文件根据 Windows 资源管理器中的文件名按字母顺序排列会产生与那些 RAR 文件根据文件日期/时间在 Windows 资源管理器中列出时相同的列表.
获取文件名中日期格式为 YYYY-MM-DD 的 RAR 文件
set FileDate=!FileTime:~0,2!-!FileTime:~3,2!-!FileTime:~6,4!
需要修改为
set FileDate=!FileTime:~6,4!-!FileTime:~3,2!-!FileTime:~0,2!
关于date - 如何通过为同一日期的所有文件创建一个存档来存档超过 7 天的文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25079261/
我想用 File::Find 归档所有 txt 文件,删除源文件并删除空目录。 我在使用“$tar->rename( );”重命名文件时遇到困难因为我想从它们的完整路径名中删除它们并仅使用父目录/*.
我试图从一个远程存储库中获取一个目录,但我只想从特定的哈希中获取该文件。如果我使用带有 HEAD 的 git archive 一切正常,但是当我尝试使用特定的哈希时: git archive -v -
无论当前目录如何,我都在尝试归档我的项目。 项目结构 main_folder/ sub1/ sub2/ sub3/ 如果我 cd至 main_folder/sub2/s
我有一个创建 install-tars 的远程裸存储库(无工作目录)。很好用。但是现在我只想为更改的文件创建 tars。我这样试过: git archive --format=tar --prefix
我正在构建自己的 rpm。通常我使用 git archive 从我感兴趣的提交或标签中获取 tarball(假设我放了一个标签 1.0): git archive --format=tgz --pre
如何使用 git archive 创建当前存储库的存档,包括本地未提交的更改? 最佳答案 我知道这是旧的,但我想我找到了解决方案。 运行: stashName=`git stash create`;
当我尝试发布 aab 时,出现此错误。请有人帮助我。我该如何修复它。 点击蓝色链接查看图片 最佳答案 当我使用拖放操作到网络浏览器时,我经常遇到这个错误。 如果我使用页面上的“上传”按钮并使用文件选择
我试图通过使用归档模块从 2 个文件夹中创建 2 个归档。 不幸的是,它无法正常工作,没有任何错误。 我的任务如下所示: tasks: - name: create a tarball of
我不想创建一个没有内部目录结构的“平面”tarball。但我希望顶级文件是“松散的”而不是镜像它们最初所在的目录结构。 考虑: + archives | + data | + site
这个问题在这里已经有了答案: 10年前关闭。 Possible Duplicate: Xcode 4 Archive Version Unspecified 你好, 我正在为 iPad 临时部署归档应
我想将 UIWebView 的当前状态保存到 iPhone SDK 中的磁盘。 我有一个 UIWebView,它加载一个包含大量 JavaScript 的网站。我想保存 UIWebView 状态,维护
存档我的 Mac OS 应用程序时,我收到“通用 Xcode 存档”。我读过,可以通过在任何静态库上将 Skip Install 设置为 YES 来解决此问题,但我没有添加任何静态库。我有两个目标和一
可以使用什么组件或方法来指定文件名列表,然后将它们压缩到单个存档中? 我不需要高级功能或任何东西,但如果我可以将一些文件名添加到字符串列表中,然后将这些文件放入 ZIP 中,那就太好了。 我尝试搜索一
我有一个很大的 tar 文件,我分割了。是否可以使用管道来 cat 并解压文件。 类似于: cat largefile.tgz.aa largefile.tgz.ab | tar -xz 而不是: c
我使用 distZip 任务来创建我的发行版。目前发行版名称为“baseName”-“version”.zip。我想将当前时间戳用作分类器,即构建时间。 我尝试使用 distZip { cla
我正在尝试将 MySQL 查询的输出动态写入存档。这是我的代码: var async = require("async"); var mysql = require("mysql"); var exp
也许是个愚蠢的问题,但我的谷歌不起作用。在我的存储库根目录上执行以下操作: $ hg archive my_archive.tar.gz 给我一个 tar.gz 文件,其中包含一个名为 my_ar
[root@c0002242 lfeng]# tar -zxvf/opt/test/ALLscripts.tar.gz -C/opt/test1 tar:这看起来不像 tar 存档 tar:跳到下一个
我的tree命令返回 tmp `-- t `-- e |-- foo.ps `-- s |-- bar.ps `
在编译DLL时,我遇到了许多undefined reference错误,我认为这可能是由于库之间的循环依赖关系引起的。为了解决这个问题,我一直在尝试使用-(文件-)和--start-group文件--
我是一名优秀的程序员,十分优秀!