ste*_*eve 4 windows batch-file
我需要记录特定文件夹中没有特定文件的系统,并创建了下面的批处理工作正常.它将由域登录脚本调用(客户端是2003 AD域中的Windows XP):
IF EXIST "C:\Documents and Settings\%username%\Application Data\Microsoft\Outlook\test.OTM" (
goto END
) ELSE (
echo %DATE%_%TIME%_%COMPUTERNAME% >> %LOG1%
)
Run Code Online (Sandbox Code Playgroud)
但是,除此之外,如果文件存在,我需要检查它是否具有特定的修改日期,如果没有,则将其输出到日志文件.到目前为止,我感到难过,非常感谢任何反馈/帮助.谢谢.
您可以在批处理脚本中获取有关文件修改日期和时间的信息,但您需要记住以下事项:
这意味着在比较之前,您需要切断时间部分,为此您需要考虑系统区域设置中指定的显示格式.因为它是一个字符串,您可能只能检查它是否是特定日期,而不是它是否属于特定时期.
以下是如何实现它:
SET filename="C:\Documents and Settings\%username%\Application Data\Microsoft\Outlook\test.OTM"
IF NOT EXIST %filename% GOTO log
FOR %%f IN (%filename%) DO SET filedatetime=%%~tf
IF "%filedatetime:~0,-6%" == "%checkdate%" GOTO END
:log
ECHO %DATE%_%TIME%_%COMPUTERNAME% >> %LOG1%
Run Code Online (Sandbox Code Playgroud)
在我的系统%%~tf
上将返回格式为的日期和时间dd.MM.yyyy hh:mm
.因此该%filedatetime:~0,-6%
部分遵循该格式并相应地切断时间部分.您可能需要稍微更改表达式以适合您的情况.
最后一点是,有一个名为的预定义变量USERPROFILE
.它指向活动用户的"主页"文件夹.所以你可以将路径字符串减少到:.C:\Documents and Settings\username
"%USERPROFILE%\Application Data\Microsoft\Outlook\test.OTM"
小智 5
如果日期相对于今天(例如,在过去7天内更新的文件),您可以使用内置日期计算的"forfiles"命令.
例如:列出过去2天内已修改的所有文件:
forfiles /D -2 /C "cmd /c ECHO file selected...@path, dated @fdate"
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
45388 次 |
最近记录: |