您可以使用wmic PATH Win32_LocalTime get
檢索你想要的格式的日期,但你需要在你的for /F
循環預先設置爲零,則。這裏是一個有效的解決方案:
for /F "delims=" %%Z in ('wmic PATH Win32_LocalTime get Day^,Month^,Year /FORMAT:LIST') do (
for /F "tokens=1* delims==" %%X in ("%%Z") do set "%%X=0%%Y"
)
> "env.properties" echo today=%Year:~-4%-%Month:~-2%-%Day:~-2%
除了定義選項字符串tokens1* delims==
,改變賦值語句set
和擴大在echo
命令位所需的量,我改變了一些更多的東西:
- 我僅檢索所需值
Day
,Month
和Year
,因爲您的wmic
命令行返回了許多其他不需要的值。
- 而不是
findstr "="
來過濾出現的空行,我纏繞另一個for /F
循環;實際上這些行不是空的,而是包含孤立的回車符,這是由於與for /F
輸出的Unicode wmic
的ANSI差對話導致的;實際上也是非空行包含結尾的回車符;第二個for /F
循環擺脫了所有這些轉換假象。
- 重定向語法已顛倒,以便不會將尾部SPACE寫入輸出文件
env.properties
。
當然你也可以切換到命令行wmic OS get LocalDateTime
作爲Squashman在their answer建議,但我還是建議環繞另一個for /F
環路避免上述轉換文物(雖然後回車字符做因爲你在這種情況下在整個字符串的開始處擴展子字符串):
for /F "delims=" %%Z in ('wmic OS get LocalDateTime /VALUE') do (
for /F "tokens=1* delims==" %%X in ("%%Z") do set "DATETIME=%%Y"
)
> "env.properties" echo today=%DATETIME:~,4%-%DATETIME:~4,2%-%DATETIME:~6,2%
改爲使用它。 'wmic OS獲取localdatetime/value'這會給你日期和時間,但是格式爲YYYYMMDDhhmmss – Squashman