2017-08-13 70 views
0

我运行一个将日期保存到文本文件的命令脚本。在命令提示符中保存和恢复日期

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 Update,但当天仍显示 当你在cmd中输入<date>

+0

使用代码格式化。它使你的代码格式和可读性;) –

+0

我会用别的东西了这一点,例如Windows脚本宿主或PowerShell的,这取决于哪个版本的Windows,你需要支持 – Marged

+0

我从来没有使用PowerShell中,它在Windows 64位亲运行 –

回答

0

简单的解决办法是使用字符串替换和写入到文本文件中只有该地区依赖日期的最后10个字符的字符串,通过使用此代码内置的环境变量日期

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

上写有echo文本为避免重定向操作>前的空格字符作为该空格字符的文件也作为尾部空间写入文件中。

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

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

@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% 

此代码具有独立于优点在其区被设定为当前用户因为WMIC的日期和时间输出串具有始终相同的格式。在命令提示窗口wmic OS GET LocalDateTime /Value运行看WMIC的UTF-16的编码输出由命令FOR线处理是线。缺点是这个代码比较慢。

使用命令设置日期回到顶端日期必须知道区域相关日期格式。

为了解所使用的命令及其工作方式,请打开命令提示符窗口,在其中执行以下命令,并仔细阅读为每个命令显示的所有帮助页面。

  • echo /?
  • for /?
  • set /?
  • wmic /?
  • wmic os /?
  • wmic os get /?
  • wmic os get localdatetime /?

阅读也即将Using Command Redirection Operators微软的文章。