在批次檔中,我需要從日期指令中提取月、日、年。所以我使用了以下命令,它本質上解析了 Date 命令以將其子字串提取到變數中:
set Day=%Date:~3,2%
set Mth=%Date:~0,2%
set Yr=%Date:~6,4%
這一切都很棒,但如果我將此批次檔部署到具有不同區域/國家/地區設定的電腦上,則會失敗,因為月、日和年位於不同的位置。
無論日期格式如何,如何提取月、日和年?
答案1
來源: http://ss64.com/nt/syntax-getdate.html
方法二(單cmd)
取得日期.cmd
@Echo off
:: Check WMIC is available
WMIC.EXE Alias /? >NUL 2>&1 || GOTO s_error
:: Use WMIC to retrieve date and time
FOR /F "skip=1 tokens=1-6" %%G IN ('WMIC Path Win32_LocalTime Get Day^,Hour^,Minute^,Month^,Second^,Year /Format:table') DO (
IF "%%~L"=="" goto s_done
Set _yyyy=%%L
Set _mm=00%%J
Set _dd=00%%G
Set _hour=00%%H
SET _minute=00%%I
)
:s_done
:: Pad digits with leading zeros
Set _mm=%_mm:~-2%
Set _dd=%_dd:~-2%
Set _hour=%_hour:~-2%
Set _minute=%_minute:~-2%
:: Display the date/time in ISO 8601 format:
Set _isodate=%_yyyy%-%_mm%-%_dd% %_hour%:%_minute%
Echo %_isodate%
pause
方法一(cmd+vb)
取得日期.cmd
@Echo off
For /f %%G in ('cscript /nologo getdate.vbs') do set _dtm=%%G
Set _yyyy=%_dtm:~0,4%
Set _mm=%_dtm:~4,2%
Set _dd=%_dtm:~6,2%
Set _hh=%_dtm:~8,2%
Set _nn=%_dtm:~10,2%
Echo %_yyyy%-%_mm%-%_dd%T%_hh%:%_nn%
取得日期.vbs
Dim dt
dt=now
'output format: yyyymmddHHnn
wscript.echo ((year(dt)*100 + month(dt))*100 + day(dt))*10000 + hour(dt)*100 + minute(dt)
答案2
答案3
我知道這並不完全符合您的要求,但我date
透過批次檔中的命令使用 Linux 應用程式的 Windows 端口,然後將結果分配給變數。
我還沒有找到一種方法來僅使用批次命令可靠地獲取日期。
答案4
雖然 VS 2008 輸出批次檔是正確的,但您幾乎可以執行任何您想要的程序,包括 Powershell 腳本和其他程序。
編輯:
以下是一些類似的問題:
https://stackoverflow.com/questions/1051845/visual-studio-2008-professional-build-process https://stackoverflow.com/questions/3049369/embed-application-compilation-time-stamp
最初,我打算把它轉移到SO。 。 。