Windows-10批次檔基於DATE指令,如何在較低的Windows版本上使用

Windows-10批次檔基於DATE指令,如何在較低的Windows版本上使用

我正在兩台(虛擬)機器上工作:

  • 首先是一台Windows 10機器
  • 第二台是 Windows 7 機器

在兩者上,短日期格式是相同的:dd.MM.yyyy
在兩者上,我根據命令運行相同的批次檔DATE

我的結果有差異,與DATE命令結果的結果相關:

  • 在 Windows 10 上:The current date is: st 22.03.2017
  • 在 Windows 7 上:The current date is: 22.03.2017

正如您所看到的,差異是由於今天名稱的存在(st是捷克語單字的縮寫Wednesday)。

Windows 10系統是主系統,所以我的問題是:如何更改Windows-7系統以包含當天名稱的前兩個字母?

作為測試,我已經嘗試了以下短日期格式:

dd dd.MM.yyyy   // this is better, the length of the format is good,
                   but it does not start with the initials of the day's name.
dddd dd.MM.yyyy // this starts with the day's name, but completely, 
                   and I only want the first two letters.

同時我進一步查看了問題:日期格式似乎用在兩個地方:

  1. 在使用DATE命令列命令時(我需要一種類似於
    xx dd.MM.yyyy(無論是什麼xx)的格式來進一步處理
  2. 在以下過程中echofor /r %DIRECTORY% %I in ("*.*") do echo %~tfI 想法是顯示時間戳記和檔案名,例如:(
    22.03.2016 13:50 <filename>不含xx

答案1

在 Windows 7 中,您必須使用ddd類似的格式,即 3 個字符,而不是 2 個字符。

所以你可以使用ddd dd.MM.yyyy。這是支援的格式。

獲得 2 個字元的一種方法是使用批次檔刪除一個字元。

答案2

真是一團糟,但我相信我已經找到了解決這個問題的方法:

要點如下:在 Windows 10 上,即使具有簡單的日期格式(例如dd.MM.yyyy),date /T命令列也會添加當天的第一個字符,因此我們得到以下結果:

date /T
st 22.03.2017

我的同事們圍繞著這些「st」字元的存在建立了批次檔。在較低版本的 Windows 上執行這些批次檔會出現上述問題。

在批次檔的開頭,我新增了以下行:

DATE=xx %DATE%

(我承認,這很幼稚)
這使得批次檔可以在我的 Windows-7 電腦上運行。
為了使其在兩個系統上都能工作,我只需要在平台上添加一個檢查,例如:

set WINDOWS_10=%ver | findstr /C:"Version 10"%
if "WINDOWS_10"=="" (
  set DATE=xx %DATE%)

我還沒有在 Windows-10 PC 上檢查它,但我相信這會成功。

相關內容