2009-08-21 5 views
1

배치 파일 내에서 작업 중이며 10 이하이면 0으로 시작하는 한 자릿수를 채워야합니다. 환경 변수에 값이 있습니다. 그것들은 월과 일로, 나는 내가 반대하고있는 파일 구조와 일치하도록 패드해야한다. 나는 "7/16/2009"형식으로 되돌아 오는 날짜를 반환하기 위해 vbscript를 사용하고 있습니다. "07/16/2009"처럼 보일 필요가 있으며, 가장 중요한 것은 별도의 EV로 각 항목을 필요로합니다.숫자가있는 월과 날을 0으로 시작하는 패딩이 필요합니다.

VBScript를 :

WScript.Echo DateAdd("d", Date, -36) 

배치 :

for /F "tokens=1-3 delims=/" %%x in ('cscript //nologo get36thday.vbs') do (
    SET YYYY=%%z 
    SET MM=%%x 
    SET DD=%%y) 

답변

3

, 나는 정확한 구문하지만 배치 스크립트를 모르는 지정된 문자 수를 에서 반환 할 수 있습니다. t 문자열의 측면.

따라서 "0"문자 다음에 달을 추가하고 가장 오른쪽에있는 2 자리 숫자를 사용하십시오. 아마이 비슷한 보일 것입니다 :

SET MM=0%%x 
SET MM=%MM:~-2% 

1 01
5 05
(10) 숙박

+0

+1. 좋은 속임수. 나는 서브 루틴과'if' 문을 사용했을 것이다. 그러나 이것은 훨씬 더 우아합니다. – Joey

+0

굉장하고, 아주 영리합니다. –

8

의 VBScript가 :

배치 스크립트
dteOldDate = Now() 
strNewDate = Right("00" & Month(dteOldDate), 2) & "/" & Right("00" & Day(dteOldDate), 2) & "/" & Year(dteOldDate) 
+0

로 대체됩니다 산출. – Helen

0

여기에 패딩 문자열 내 방법은 10이된다됩니다.

이 예에서 MYVAR은 5 개의 0으로 채워집니다. 당신은 날짜와 간단한 문자열 대체 할 것입니다 시간에 대한 당신이 전면에 제로 패드에 원하는 문자열의 길이를 모르는 경우 다른 답변은 수치를 입력받은

SET MYVAR=00000%MYVAR% 
SET MYVAR=%MYVAR:~-5% 
0

유용합니다. 배치 파일 스크립트의에서 그것을 읽기 때문에,`WScript.Echo strNewDate` : 공간이있는 경우 짧은에서

set hour=!TIME:~0,2! 
set hour=!hour: =0! 

, 그것은 또한 날짜를 에코 필요가 0

관련 문제