在命令提示符中保存和恢复日期

时间:2017-08-13 13:32:37

标签: cmd

我运行一个命令脚本,将日期保存到文本文件。

echo %date% > date.txt

只有问题此命令将日期保存在文本文件中,如此

Sun 13/08/2017

当它启动服务时,我有一个更改日期的命令

date < date.txt

我收到错误 系统无法接受输入的日期。

需要显示

13/08/2017

要使此命令起作用

date < date.txt

我有人给了我这个命令

for /F "tokens=2" %i in ('date /t') do echo %i > date.txt

它删除了一天,它自己运行。 但要运行脚本,它会在执行后关闭, 它似乎与脚本一起运行。

我有其他电脑,我使用此脚本并在Windows更新后

它修复了问题;其他计算机上的Windows更新删除了一天。

此计算机已更新所有Windows,但仍显示该日期 在cmd中键入<date>

1 个答案:

答案 0 :(得分:0)

简单的解决方案是使用字符串替换,并使用以下代码仅将内置环境变量 DATE 的区域相关日期字符串的最后10个字符写入文本文件:

>date.txt echo %DATE:~-10%

在将带有>的文本写入文件时,重定向操作符echo之前避免使用空格字符,因为此空格字符也会作为尾随空格写入文件中。

有时使用echo %VariableText%>OutputFile.txt是不安全的,因为变量text可能以1到9范围内的数字结尾,这会导致执行1>9>的命令行这意味着将句柄1到9重定向到文件,而不是将数字1写入9到文件。在这种情况下,建议在命令行{}之前的命令行开头指定重定向到文件,如上面的命令行所示。

也可以使用此代码将格式为echo的日期保存到ANSI编码的文本文件DD/MM/YYYY中。

date.txt

此代码的优势在于可以独立于当前用户设置的区域,因为 WMIC 输出的日期和时间字符串始终具有相同的格式。在命令提示符窗口@echo off for /F "tokens=2 delims==." %%I in ('%SystemRoot%\System32\wbem\wmic.exe OS GET LocalDateTime /Value') do set "LocalDateTime=%%I" >date.txt echo %LocalDateTime:~6,2%/%LocalDateTime:~4,2%/%LocalDateTime:~0,4% 中运行,以查看由命令 FOR 行处理的 WMIC 的UTF-16编码输出。缺点是此代码较慢。

使用命令 DATE 设置日期时,必须知道区域相关日期格式。

要了解使用的命令及其工作原理,请打开命令提示符窗口,执行以下命令,并完全阅读为每个命令显示的所有帮助页面。

  • wmic OS GET LocalDateTime /Value
  • echo /?
  • for /?
  • set /?
  • wmic /?
  • wmic os /?
  • wmic os get /?

另请阅读Microsoft有关Using Command Redirection Operators

的文章