如何在不受区域设置影响的情况下将今天的日期与文件的上次修改日期进行比较?

Dom*_*que 3 windows command-line date batch-file regional-settings

可以获取 Windows 系统上的当前日期和文件的最后修改日期,如下所示:

\n\n
    \n
  • 当前日期 :date /T
  • \n
  • 最后修改日期:\xc2\xb1 echo %~tI%(循环%I内的文件在哪里FOR
  • \n
\n\n

然而,两者都取决于区域设置,因此需要用其他内容替换它们:

\n\n
    \n
  • 当前日期 :wmic os get localdatetime
  • \n
  • 最后修改日期:???
  • \n
\n\n

有人知道问号怎么填吗?

\n\n

背景信息,想法是得到如下结果:

\n\n
    \n
  • 当前日期:20170323115047.782000+060
  • \n
  • 最后修改日期:20170323120513.0123
  • \n
\n\n

砍掉前八个字符(为了得到这一天)

\n\n
    \n
  • 当前日期:20170323
  • \n
  • 最后修改日期:20170323
  • \n
\n\n

这使得可以看到该文件今天确实被修改了。
\n我想避免区域设置,以便确定需要截断的字符数量。

\n

roj*_*ojo 5

对于时间戳比较,您可以用来forfiles查找今天修改的文件。我认为这个解决方案比从 WMI 查询结果中删除子字符串更优雅。

@echo off & setlocal

set "file=notes.txt"

forfiles /d +0 /m "%file%" >NUL 2>NUL && (
    echo %file% was modified today.
) || (
    for %%I in ("%file%") do echo %%~I was last modified %%~tI
)
Run Code Online (Sandbox Code Playgroud)

forfiles /?在 cmd 控制台中获取更多信息。该forfiles命令在匹配时退出 0,在不匹配时退出 1,允许使用条件执行。另请参阅此相关问题