【问题标题】:Cmd: Compare two file datesCmd:比较两个文件日期
【发布时间】:2018-09-04 08:26:06
【问题描述】:

在 cmd 脚本中(这与批处理脚本相同吗?)我只想在 file1file2 更新时执行命令。这两个文件位于同一个目录中。

我找到了manythingsonSO,但没有一个完全符合我的要求,或者以非常迂回的方式进行,或者不考虑本地化。

就像这样:

if "%file1%" is_newer_than "%file2%" (
  execute command
)
  • 我确实想找到哪个文件更新。
  • 我确实想找到最新文件的日期
  • 它必须独立于语言环境,因此不允许对格式化日期进行字符串操作! (该脚本将在全球范围内使用)
  • 命令本身是日期感知的,不像xcopy之类的。

This 答案看起来最有希望,但我不知道如何在 if 语句中使用该函数两次。

【问题讨论】:

标签: batch-file


【解决方案1】:

dir /b /a:-d /o:d /t:w %file1% %file2% 应该按写入时间对文件进行排序 /o:-d逆向排序

for /f "tokens=*" %%? in ('dir /b /a:-d /o:d /t:w %file1% %file2%') do echo %%~tf? 示例显示带时间戳

【讨论】:

  • 开始一个简单解决方案的好主意。但重要的是要注意,这仅在两个文件位于同一文件夹中时才有效,因为对每个文件夹都进行了单独的排序。我意识到 OP 明确指定了这个条件,但我不希望其他人错误地将这种技术用于不同文件夹中的文件。
  • 一个限制 - 它不会告诉您两个文件是否具有完全相同的时间戳。我进行了一些快速测试,如果使用/o-d/od,则具有相同时间戳的文件似乎以相同的顺序出现。这一事实可用于识别两个文件何时具有相同的时间戳。
  • 你可以用软链接创建新文件夹(或者只是复制)然后在上面做
猜你喜欢
  • 1970-01-01
  • 2011-09-01
  • 2013-11-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多