Windows命令解釋器使用的C/C++函數strtol與第三功能參數base
值0
。這意味着任何以0開頭的數字字符串被解釋爲八進制數字。 08
和09
不是有效的八進制數爲八進制系統僅具有數字0到7
的溶液並不使用算術表達式,而是隻使用字符串替換:
@echo off
setlocal EnableExtensions
for /F "tokens=2 delims==." %%I in ('%SystemRoot%\System32\wbem\wmic.exe OS GET LocalDateTime /VALUE') do set "MyDate=%%I"
set "Year=%MyDate:~0,4%"
if "%MyDate:~4,1%" == "0" (set "Month=%MyDate:~5,1%") else set "Month=%MyDate:~4,2%"
if "%MyDate:~6,1%" == "0" (set "Day=%MyDate:~7,1%") else set "Day=%MyDate:~6,2%"
echo Year: %Year%
echo Month: %Month%
echo Day: %Day%
endlocal
這批代碼輸出:
Year: 2017
Month: 8
Day: 24
使用WMIC命令的UTF-16小字節序編碼的輸出是:
LocalDateTime=20170824150309.315000+120
只有20170824150309
被分配到環境中,因爲tokens=2 delims==.
這是由後只使用字符串替換,未來3個通過命令行命令行,而不是算術表達式在這裏是沒有幫助去除前導零進一步處理的變量MyDate
。
爲了解所使用的命令及其工作方式,請打開命令提示符窗口,在其中執行以下命令,並仔細閱讀爲每個命令顯示的所有幫助頁面。
echo /?
for /?
if /?
set /?
wmic /?
wmic os /?
wmic os get /?
wmic os get localdatetime /?
現在,我得到,當SET /一個MM =%MyDate時:〜4,2%的結果是08那個時候纔得到這個錯誤。 –
但我想要數字格式,如果結果是05我只需要5.如果我的結果是11或10或12那時我需要11或10或12分別。 –