- 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/
我的数据库中有两张表,一张用于 field ,另一张用于预订。我需要的是一个查询来选择所有未预订的 field 。见下文: 餐 table 预订具有以下字段: bk_id venue_id 作为(预订
嗨,我是编码新手,我有一些培训项目,其中包括从 HTML 表单输入 MySQL 数据库。它就像你玩过的游戏的日志。第一个日期输入是您开始游戏的时间,第二个日期输入是您完成游戏的时间。但我需要检查器或类
我是这个 sql 编码的新手,我正在尝试学习新的东西。因此,我创建了一个交货表,其中包含一些属性,如商品代码、交货日期、交货数量。所以如何从同一张表中获取第一个交货日期(最小日期)和交货数量以及最晚交
我从支付网关返回了这个日期 2014-05-15T08:40:52+01:00 我得到 2014-05-15T08:40:52 但我无法识别时区 +01:00 的含义 我的位置时区是 UTC−06:0
我快要疯了,请帮忙。 我有一列包含日期时间值。 我需要找到每天的最小值和最大值。 数据看起来像这样 2012-11-23 05:49:26.000 2012-11-23 07:55:43.000
我从 json 数据中获取日期为 2015 年 4 月 15 日晚上 10:15我只想在 html 页面中显示 json 响应数据的时间,例如 10:15 PM这里我放了我的js函数和html代码 J
是否有 javascript 库或其他机制允许我将 .NET 日期/时间格式字符串(即 yyyy-MM-dd HH:mm:ss)传递给 javascript函数并让它相应地解析提供的日期时间值?我一直
我正在使用以下代码以正确的格式获取当前的 UTC 时间,但客户返回并要求时间戳现在使用 EST 而不是 UTC。我搜索了 Google 和 stackoverflow,但找不到适用于我现有代码的答案。
我有以下日期的平均温度数据。我想找到连续至少 5 天低于或高于 0 摄氏度的开始日期。 date_short mean.temp 1 2018-05-18 17.54 2 2018-05-19
它可以在其他网络浏览器中使用,但 IE11 返回无效日期。 为了调试我使用了下面的代码。 console.log('before - ' + date.value); date.value = new
我在 Excel 中有一个数据的 Web 提取,其中日期列带有/Date(1388624400000)/。我需要在 Excel 中将其转换为日期。 最佳答案 能够从 here 中推断出它. 假设字符串
嗨,我的 Schmema 有一个带有 ISO 日期的字段: ISODate("2015-04-30T14:47:46.501Z") Paypal 在成功付款后以该形式返回日期对象: Time/Date
我的 table : CREATE TABLE `tbdata` ( `ID` INT(10) NOT NULL AUTO_INCREMENT, `PatientID` INT(10) NOT
我正在 Ubuntu 服务器 12.04 中编写一个 shell 脚本,它应该比较日志文件中的一些数据。在日志文件中,日期以以下格式给出: [Mon Apr 08 15:02:54 2013] 如您所
我想使用 GROUP BY WITH ROLLUP 创建一个表并获取总行数而不是 null。 $sql ="SELECT IF(YEAR(transaktioner.datum
我正在创建博客文章,在成功迁移我的博客文件后,当我转到我网站的博客页面时返回一个错误(无法解析其余部分:':“Ymd”'来自'post.date|date: "Ymd"') 我似乎无法确定这是语法错误
我正在尝试获取要插入到 CAML 查询中的月份范围,即:2010-09-01 和 2010-09-30。 我使用以下代码生成这两个值: var month = "10/2010"; var month
如何将代码document.write("直到指定日期")更改为writeMessage(date)中的日期?此外,writeMessage(date) 中的日期未正确显示(仅显示年份)。感谢您帮助解
我在 Windows (XP) 和 Linux 上都尝试过 utime()。在 Windows 上我得到一个 EACCES 错误,在 Linux 上我没有得到任何错误(但时间没有改变)。我的 utim
我正在尝试计算发生在同一日期的值的总和(在 XYZmin 中)。 我的数据看起来像这样, bar <- structure(list(date = structure(c(15622, 15622,
我是一名优秀的程序员,十分优秀!