Windows 배치 스크립트에 명령 행 인수 전달


10

몇 가지 명령 줄 인수를 전달해야하는 Windows 배치 스크립트를 만들어야합니다. 이러한 인수는 임의의 순서로 나타날 수 있지만 스크립트는 인수 이름을 기준으로 올바르게 선택해야합니다. 예 :

<scriptname> -age <agevalue> -gender <gender>
<scriptname> -gender <gender> -age <agevalue>

위의 두 가지 방법 중 하나로 스크립트를 호출 할 수 있지만 연령과 성별을 적절히 선택하여 변수에 할당해야합니다. 인수는 앞에 스위치 (예 : -age, -gender 등)로 식별 할 수 있습니다.

누군가 내부적으로 이것을 식별하는 예를 들어 주시겠습니까?

답변:


10

불행히도 배치에는 getops 와 같은 내장 함수 가 없습니다 . 그러나 자신의 가난한 사람의 변형을 구현할 수 있습니다.

:GETOPTS
 if /I %~1 == --age set AGE=%2& shift
 if /I %~1 == --gender set GENDER=%2& shift
 shift
if not (%1)==() goto GETOPTS

인수의 수를 초과하지만 계산서에 맞으면 번거로울 수 있습니다. 감사합니다
Dhiwakar Ravikumar

1
robvanderwoude.com/if.php에 따라 작성 하는 것이 좋습니다 if /I "%~1" == "--age" ... (물결표 참고). 빈 매개 변수 또는 큰 따옴표로 묶은 매개 변수에도 적용됩니다.
Axel Kemper

큰 따옴표를 추가 할 수 있습니다. 그렇지 않으면 명령문은 빈 매개 변수 % 1에서 작동하지 않습니다.
Axel Kemper

가능한 여러 인수에 연령 (숫자) 및 성별 ( "M"또는 "F")과 같은 설정 형식 또는 유형이있는 경우 인수를 정의 할 필요는 없지만 대신 비교 인식을 사용하여 인수를 지정하십시오. 스크립트 내의 적절한 변수. 나는 첫 IT 작업에서 9x와 XP 사이의 전환 기간 동안 작성한 초기 배치 스크립트를 위해이 작업을 수행했습니다. 스크립트는 OS 유형에 대한 인수, 스크립트가 실행 된 드라이브 및 기타 몇 가지를 승인하거나 적절한 설정을 자동 감지 할 수 있습니다. 약간 과잉이지만 재미있는 운동.
music2myear

8

Powershell로 할 수 있습니까? 또는 배치가 필요합니까? Powershell을 사용하면 쉽고 편리하게 스크립트 상단에 이와 같은 것을 추가하면 각 매개 변수를 임의의 순서로 호출 할 수 있습니다.

param (
[string]$Age,
[string]$Gender
)

일괄 처리로 수행 할 수 있지만 많은 매개 변수 검사가 필요합니다. 다음은이를 수행하는 일부 일괄 처리 스크립트 링크입니다.

http://www.ericphelps.com/batch/samples/arguments.bat.txt

(중복 가능)

https : //.com/questions/5215729/is-there-a-way-to-pass-parameters-by-name-and-not-by-order-to-a-batch-bat-f


1
. 우리가이 배치 스크립트 것이 엄격한 요구 사항이 :(에만 배치 스크립트이어야 고마워요 :)하지만.
Dhiwakar Ravikumar
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.