파일 이름 지정에 날짜 및 시간 데이터를 사용하는 DOS 스크립트에서 버그를 발견했습니다. 문제는 시간 변수가 시간 < 10에 대해 선행 0을 자동으로 제공하지 않았기 때문에 공백이 생겼다는 것입니다. 따라서 실행> echo %time% 은 '9:29:17.88'을 반환합니다.
이 문제를 해결하기 위해 선행 0을 조건부로 채우는 방법을 아는 사람이 있습니까?
추가 정보: 내 파일 이름 설정 명령은 다음과 같습니다.
set logfile=C:\Temp\robolog_%date:~-4%%date:~4,2%%date:~7,2%_%time:~0,2%%time:~3,2%%time:~6,2%.log
결과는 다음과 같습니다: C:\Temp\robolog_20100602_ 93208.log(오전 9시 23분).
이 질문은 다음과 관련이 있습니다.이 하나.
감사해요
답변1
매우 간단한 방법은 선행 공백을 0으로 바꾸는 것입니다.
echo %TIME: =0%
출력:
09:18:53,45
답변2
내 솔루션은 다음 아이디어를 사용하는 것입니다.
SET HOUR=%TIME:~0,2%
IF "%HOUR:~0,1%" == " " SET HOUR=0%HOUR:~1,1%
답변3
와 비슷한 생각데니스의 대답. 문제는 너비가 %time%
항상 동일하므로 더 짧은 문자열을 반환하는 대신 시작 부분에 공백을 삽입한다는 것입니다.
다음을 사용하여 이를 제거할 수 있습니다 for
.
for /f "delims= " %x in ("%time%") do set T=0%x
그렇다면 나머지는 거의 같습니다.
답변4
위의 모든 것을 구현하는 가장 컴팩트한 솔루션의 경우
FOR /F "TOKENS=1-4 DELIMS=/ " %%A IN ("%DATE%") DO FOR /F "TOKENS=1-3 DELIMS=:." %%E IN ("%TIME: =0%") DO SET 로그 파일=C:\Temp\robolog_%%D%%C%%B_%%E%%F%%G.log
스크립트에 새 줄을 추가하지 않고도 여기에서 작동합니다. 하지만 다중 명령 솔루션보다 덜 우아할 수도 있습니다.