2013-03-08 3 views
1

이 스크립트는 어떻게 오류를 계속 반환합니까?배치 스크립트 세트/오류

@echo off 
set csd=Fri 03/08/2013 
set edayn=%csd:~7,1%%csd:~8,1% 
set /a tsday=%edayn% 
echo %edayn% 
echo %tsday% 
pause 

시간 형식 : ddd를 MM/DD/YYYY
은 "CSD"변수 내가 스크립트를 연 날이다. ,

Invalid number. Numeric constants are either decimal (17), 
hexadecimal (0x11), or octal (021). 
08 
ECHO is off. 
Press any key to continue . . . 

날이 0으로 시작하지 않습니다
나는 "/ 설정" 그것을 제거하기 위해 사용되는 변수 "edayn"또는 날짜에 제로를 제거하려면하지만이 오류를 보여줍니다 이 오류가 발생하지 않습니다.
set tsday=%edayn%

내가 당신의 CSD에서 월, 일을 얻을 :
나는 그냥 변수에 값 할당을위한 SET의/A가 필요하지 않습니다이 스크립트

+0

정확히 똑같은 [여기] (http://stackoverflow.com/questions/10077866/numeric-error-in-batch?rq=1)과 [여기] (http : //stackoverflow.com/questions/9762794/invalid-number-numeric-constants-are-either-decimal-17-hexadecimal-0x11-o?rq=1). –

답변

0

에 오류를 찾을 수 없습니다 당신이 수십 Fi를위한 다음, 앞에 0을 죽이고 (수십 단위) 두 부분으로 각 필드를 분할 할 경우

%csd:~4,2% 
%csd:~7,2% 

편집
와 ELD : -
검색 및 교체 '0'빈 문자열 ''를 사용 %variable:0=% 구문

@echo off 
set csd=Fri 13/08/2013 
set day1=%csd:~4,1% 
set day2=%csd:~5,1% 
set mo1=%csd:~7,1% 
set mo2=%csd:~8,1% 
set day=%day1:0=%%day2% 
set mo=%mo1:0=%%mo2% 
echo %day%/%mo% 
+0

그러나 정상적인'set'은 선행 제로를 제거하지 않습니다. –

+0

아, 네, 저는 제로의 aspect보다 에러에 초점을 맞추고있었습니다 :) –

+0

이 아이디어는 제 마음 속에 있지만 좋은 아이디어입니다, 고마워요! – wthe22

2

8 진수합니다 (/a 플래그가 set 명령에 사용하는 경우) 접두사가 있기 때문에 오류를 얻을 이유는 숫자 0으로

08이 유효한 숫자가 아닌 이유는 8 진수 시스템에 8 기호 (0-7) 만 포함되어 있기 때문에 08을 사용할 수 없기 때문입니다.

+0

@ Joe 나는 농담/참고/물건을 얻지 못했습니다. 설명하는 마음? –

+0

10 진법은 18 진수가 될 것입니다. 8 진법을 의미 할 것입니다. : – Joey

+0

@ 조이가 편집 해 주셨고, 조금 슬픈데 수수께끼를 푸는 데 가장 좋은 답을 얻지 못했습니다. '( –