2017-08-13 69 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微軟的文章。