我运行一个命令脚本,将日期保存到文本文件。
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>
时
答案 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。
的文章