배치 파일의 날짜 명령에서 월, 일, 연도를 추출해야 합니다. 그래서 나는 기본적으로 Date 명령을 구문 분석하여 하위 문자열을 변수로 추출하는 다음을 사용했습니다.
set Day=%Date:~3,2%
set Mth=%Date:~0,2%
set Yr=%Date:~6,4%
모두 훌륭하지만 지역/국가 설정이 다른 시스템에 이 배치 파일을 배포하면 월, 일, 연도가 다른 위치에 있기 때문에 실패합니다.
날짜 형식에 관계없이 월, 일, 연도를 어떻게 추출합니까?
답변1
원천: http://ss64.com/nt/syntax-getdate.html
방법 2(단일 cmd)
GetDate.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
방법 1(cmd+vb)
GetDate.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%
getdate.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로 옮기려고 했습니다. . .