Если вы знаете, что ваши региональные настройки не изменятся, вы можете сделать это следующим образом:
если ваш краткий формат даты - дд / мм / гггг:
SET MYDATE =% DATE: ~ 3,2 %% DATE: ~ 0,2 %% DATE: ~ 8,4%
если ваш краткий формат даты - ММ / дд / гггг:
SET MYDATE =% DATE: ~ 0,2 %% DATE: ~ 3,2 %% DATE: ~ 8,4%
Но нет общего способа сделать это независимо от ваших региональных настроек.
Я не рекомендовал бы полагаться на региональные настройки для всего, что будет использоваться в производственной среде. Вместо этого вам следует рассмотреть возможность использования другого языка сценариев - PowerShell, VBScript, ...
Например, если вы создаете VBS-файл yyyymmdd.vbs в том же каталоге, что и ваш командный файл, со следующим содержимым:
' yyyymmdd.vbs - outputs the current date in the format yyyymmdd
Function Pad(Value, PadCharacter, Length)
Pad = Right(String(Length,PadCharacter) & Value, Length)
End Function
Dim Today
Today = Date
WScript.Echo Pad(Year(Today), "0", 4) & Pad(Month(Today), "0", 2) & Pad(Day(Today), "0", 2)
тогда вы сможете вызвать его из вашего командного файла следующим образом:
FOR /F %%i IN ('cscript "%~dp0yyyymmdd.vbs" //Nologo') do SET MYDATE=%%i
echo %MYDATE%
Конечно, в конечном итоге наступит момент, когда перезапись вашего пакетного файла на более мощном языке сценариев будет более целесообразной, чем смешивание его с VBScript таким образом.