如何从bat文件中的文件中获取日期?

时间:2009-09-14 17:02:41

标签: windows scripting batch-file

我正在写一个bat脚本,我必须将日期从文件保存到变量。我怎么能这样做?

我将使用该变量来检查文件是否超过N天,因此将日期保存为允许我进行此类测试的格式会很好。

3 个答案:

答案 0 :(得分:2)

批处理文件中的日期操作几乎不可能以合理的方式正确处理。你唯一能做的就是支持你的文化而忽略其余的文化。

但是,如果您在批处理(或子例程)的参数中具有文件名,则可以使用%~t1。否则以下内容:

for %%x in (%file%) do set datetime=%%~tx

在我的机器上,这就是“2009-08-28 16:13”,然后可以将其解析为各个部分:

:dissect_date_time
for /f "tokens=1-5 delims=-: " %%a in (%1) do set year=%%a&set month=%%b&set day=%%c&set hour=%%d&set minute=%%e
goto :eof

这是一个可以用

调用的子程序
call :dissect_date_time %datetime%

然后在各自的环境变量中包含各个部分。根据您的日期/时间格式进行调整。这个大量使用for作为标记化器。

一旦你拥有了各个部分,你可以尝试通过简单地用当前日期/时间和减去相同的过程来确定文件的年龄。不会很有趣,但有效。

答案 1 :(得分:1)

Here是一个批处理文件,“从单个文件夹中删除超过N天的文件”。

将删除替换为您需要做的任何事情。

答案 2 :(得分:1)

批处理命令语言并不完全取决于该任务。微软建议PowerShell

  

Microsoft Windows PowerShell命令行shell和脚本语言可帮助IT专业人员实现更好的控制和生产力。 Windows PowerShell使用新的以管理员​​为中心的脚本语言,130多种标准命令行工具以及一致的语法和实用程序,使IT专业人员能够更轻松地控制系统管理并加速自动化。 Windows PowerShell易于采用,学习和使用,因为它适用于您现有的IT基础架构和现有脚本投资,并且可以在Windows XP,Windows Vista和Windows Server 2003上运行。

有关使用PowerShell的类似任务的讨论,请参阅powershell-script-to-delete-old-files