2012-07-26 2 views
0

매개 변수가 유효하지 않은 경우 배치가 사용법을 표시합니다.배치에서 변수의 문자열을 사용하여 문자열 자르기

예 :

Running "sample.bat update fuh" 

    :usageactions 
    set actions=%* 
    set toremove=update 
    set todisplay=%actions:%toremove% =% 
    echo Error: Invalid Arguments - '%todisplay%'. 
    echo Type sample.bat %toremove% -h for usage. 

예상 출력 :

Error: Invalid Arguments - 'fuh'. 
    Type sample.bat update -h for usage 

하지만 내 출력은 다음과 같습니다

Error: Invalid Arguments - 'update'. 
    Type sample.bat update -h for usage 

어떻게 그것을 achived 수 있나요? 어떤 도움을 주시면 감사하겠습니다. 감사.

당신은 한 줄에 한 번 이상 표현 더 확장하려고

+0

하나의 매개 변수 또는 여러 매개 변수 만 지원합니까? – LittleBobbyTables

+0

매개 변수에는 두 번째 매개 변수가 정확해야합니다. – quinekxi

답변

3

(그런데,. 그 혼란 경우 질문을 수정하시기 바랍니다)하지만, 파서는 퍼센트가 쌍으로있는 추측 할 수 있습니다.

set todisplay=%actions:%toremove% =% 

현재 확장

setlocal EnableDelayedExpansion 
set toDisplay=!actions:%toRemove% =! 

먼저 % toRemove % 확대 할 예정 지연 사용할 수, 행이

set toDisplay=!actions:update =! 

후 느낌표식이 평가 될 것 같다.

+0

철저한 대답으로 체크 표시가 나타납니다. :디 – quinekxi

0

다행히도 나는 내 문제에 대한 해결책을 찾았습니다. 어쨌든, 여기 솔루션입니다.

:usageactions 
setLocal EnableDelayedExpansion 
set actions=%* 
set toremove=update 
set todisplay=!actions:%toremove% =! 
echo Error: Invalid Arguments - '%todisplay%'. 
echo Type sample.bat %toremove% -h for usage. 
endlocal 

이렇게 표시됩니다.

Error: Invalid Arguments - 'fuh'. 
Type sample.bat update -h for usage 
관련 문제