배치 파일에서 여러 매개 변수 세트를 허용하는 방법은 무엇입니까?

Hello World

배치 파일을 좀 더 유연하게 만들려고합니다.

여러 인수 집합을 허용 할 수있는 배치 파일을 상상해보십시오.

그래서하는 대신

myexe "path1" /s1 /s2 | myexe path2 | ...  

하나는 할 수 있습니다.

myexe ["path1" /s1 /s2] [path2] [...]

그래서 가장 먼저 떠오른 것은 myexe의 이름을 _myexe__로 바꾸고 myexe.bat라는 이름의 배치 파일을 만드는 것입니다.

내용 myexe.bat:

@echo off

if "%1"=="" goto default

:start
_myexe__ %1
shift
if not "%1"=="" goto default
goto end

:default
_myexe__
:end

이제 가장 먼저 떠오르는 것은 큰 따옴표를 사용하는 것입니다.

그러나 여기에 문제가 있습니다. 매개 변수 중 하나가 큰 따옴표를 사용하면 어떻게 될까요 (예 : 위의 예에서 "path1")

나는 []을 사용하여 더 깔끔하게 만들고 명시 적으로 정의하지 않고도 단일 세트와 다중 세트를 구별 할 수있을만큼 내 배치 파일을 똑똑하게 만들 것입니다.

사용하지 않고 할 수있는 방법이 %varname~:sI,eI%있습니까?

드 벤햄

*또는 포함 된 인수를 손상 시키므로 간단한 FOR로 인수를 구문 분석하는 것은 안전하지 않습니다. ?파일을 찾고 있다고 가정하고 와일드 카드 마스크와 일치하는 모든 파일로 인수를 확장합니다.

또한 myexe.exe의 이름을 다른 이름으로 변경하더라도 배치 파일 이름을 myexe.bat로 지정하는 것에 대한 Compo의 우려를 공유합니다. myexeMulti.bat와 같은 스크립트를 호출하는 것이 좋습니다.

매개 변수를 안정적으로 구문 분석해야 할 때마다 항상 GOTO 루프를 사용하고 그 내용을 제어 할 수 없습니다.

+매개 변수를 사용하여 각 매개 변수 그룹을 분리 하는 것이 좋습니다 .

다음은 항상 제공되는 강력한 솔루션입니다.

  • +myexe에 매개 변수로 전달할 필요 가 없습니다.
  • 포이즌 문자를 포함하는 모든 매개 변수는 인용됩니다.

여러 번 사람들 if "%~1" neq ""은를 사용하여 인수가 있는지 테스트하지만 해당 테스트는 ""인수가없는 것으로 잘못 취급 합니다. 나는 보수적이며 ""인수 로 전달하고 싶을 것이라고 가정 하므로 set arg=%1arg가 정의되었는지 테스트 한 다음 테스트합니다.

@echo off
setlocal
set "args="
:loop
set arg=%1
if defined arg (
  if .%1==.+ (
    myexe %args%
    set "args="
  ) else (
    set args=%args% %1
  )
  shift /1
  goto loop
)
myexe %args%
exit /b

사용자가 실행하면

myExeMulti /s1 /s2 "*" + + "abc" /s1 + "abc" /s1 /s2

그러면 스크립트가 실행됩니다.

myexe  /s1 /s2 "*"
myexe
myexe  "abc" /s1
myexe  "abc" /s1 /s2

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

값 속성에 여러 매개 변수를 전달하고 이름 속성의 연관 배열에 배치하는 방법은 무엇입니까?

분류에서Dev

Dart / Flutter에서 여러 매개 변수를 허용하는 함수 콜백을 선언하는 방법은 무엇입니까?

분류에서Dev

Ant의 파일 세트에 대한 여러 제외를 입력 매개 변수로 전달하는 방법은 무엇입니까?

분류에서Dev

컴파일러에 전달 된 동일한 매개 변수를 사용하여 cmake에서 명령을 실행하는 방법은 무엇입니까?

분류에서Dev

FastAPI에서 파일 업로드를 사용하여 여러 본문 매개 변수를 추가하는 방법은 무엇입니까?

분류에서Dev

여러 인수를 허용하는 Javascript 에서이 기능을 개선하는 방법은 무엇입니까?

분류에서Dev

매개 변수에서 불일치 참조 수정자를 사용하여 가변 템플릿을 dynamic_cast하는 방법은 무엇입니까?

분류에서Dev

CSV 파일을 사용하여 JMeter의 HttpSampler에 매개 변수를 채우는 방법은 무엇입니까?

분류에서Dev

동일한 값을 가진 여러 매개 변수 마커에 대해 jdbcTemplate에서 매개 변수를 전달하는 방법은 무엇입니까?

분류에서Dev

wcf restful 서비스에서 여러 매개 변수를 전달하는 방법은 무엇입니까?

분류에서Dev

배치 파일의 (for in)에 대한 부모에서 자식으로 매개 변수를 전달하는 방법은 무엇입니까?

분류에서Dev

여러 URL 매개 변수 / 세그먼트를 캡처하는 방법은 무엇입니까?

분류에서Dev

메소드 매개 변수를 사용하여 객체에 액세스하는 방법은 무엇입니까?

분류에서Dev

두 개의 매개 변수를 사용하여 배열을 필터링하는 방법은 무엇입니까?

분류에서Dev

CMD의 여러 매개 변수를 배치 파일로 전달하는 방법

분류에서Dev

포스트 스크립트 인쇄 파일에 프린터 드라이버 매개 변수를 배치하는 방법은 무엇입니까?

분류에서Dev

URL의 HTML 페이지에 전달 된 매개 변수에서 PHP를 사용하여 텍스트 파일을 만드는 방법은 무엇입니까?

분류에서Dev

Blazor에서 매개 변수를 사용하여 함수를 호출하는 방법은 무엇입니까?

분류에서Dev

jQuery에서 매개 변수를 사용하여 JavaScript 함수를 호출하는 방법은 무엇입니까?

분류에서Dev

Laravel 5-db 삽입을 위해 laravel 배열에 여러 매개 변수를 추가하는 방법은 무엇입니까?

분류에서Dev

FastAPI에서 빈 매개 변수를 허용하지 않는 방법은 무엇입니까?

분류에서Dev

vue-quill 편집기에서 여러 매개 변수를 내보내는 방법은 무엇입니까?

분류에서Dev

다음 js-api의 URL에 여러 매개 변수를 전달하는 방법은 무엇입니까?

분류에서Dev

웹 API에 여러 매개 변수를 전달하는 방법은 무엇입니까?

분류에서Dev

Cucumber 단계에 여러 매개 변수를 전달하는 방법은 무엇입니까?

분류에서Dev

URL의 여러 매개 변수를 iOS의 웹보기에 전달하는 방법은 무엇입니까?

분류에서Dev

위치 매개 변수를 유지하는 파이프에서 읽는 방법은 무엇입니까?

분류에서Dev

Windows 레지스트리의 전체 파일 이름 (공백 포함)을 매개 변수로 배치 파일에 전달하는 방법은 무엇입니까?

분류에서Dev

파이썬에서 매개 변수화 된 함수 세트를 만드는 방법은 무엇입니까?

Related 관련 기사

  1. 1

    값 속성에 여러 매개 변수를 전달하고 이름 속성의 연관 배열에 배치하는 방법은 무엇입니까?

  2. 2

    Dart / Flutter에서 여러 매개 변수를 허용하는 함수 콜백을 선언하는 방법은 무엇입니까?

  3. 3

    Ant의 파일 세트에 대한 여러 제외를 입력 매개 변수로 전달하는 방법은 무엇입니까?

  4. 4

    컴파일러에 전달 된 동일한 매개 변수를 사용하여 cmake에서 명령을 실행하는 방법은 무엇입니까?

  5. 5

    FastAPI에서 파일 업로드를 사용하여 여러 본문 매개 변수를 추가하는 방법은 무엇입니까?

  6. 6

    여러 인수를 허용하는 Javascript 에서이 기능을 개선하는 방법은 무엇입니까?

  7. 7

    매개 변수에서 불일치 참조 수정자를 사용하여 가변 템플릿을 dynamic_cast하는 방법은 무엇입니까?

  8. 8

    CSV 파일을 사용하여 JMeter의 HttpSampler에 매개 변수를 채우는 방법은 무엇입니까?

  9. 9

    동일한 값을 가진 여러 매개 변수 마커에 대해 jdbcTemplate에서 매개 변수를 전달하는 방법은 무엇입니까?

  10. 10

    wcf restful 서비스에서 여러 매개 변수를 전달하는 방법은 무엇입니까?

  11. 11

    배치 파일의 (for in)에 대한 부모에서 자식으로 매개 변수를 전달하는 방법은 무엇입니까?

  12. 12

    여러 URL 매개 변수 / 세그먼트를 캡처하는 방법은 무엇입니까?

  13. 13

    메소드 매개 변수를 사용하여 객체에 액세스하는 방법은 무엇입니까?

  14. 14

    두 개의 매개 변수를 사용하여 배열을 필터링하는 방법은 무엇입니까?

  15. 15

    CMD의 여러 매개 변수를 배치 파일로 전달하는 방법

  16. 16

    포스트 스크립트 인쇄 파일에 프린터 드라이버 매개 변수를 배치하는 방법은 무엇입니까?

  17. 17

    URL의 HTML 페이지에 전달 된 매개 변수에서 PHP를 사용하여 텍스트 파일을 만드는 방법은 무엇입니까?

  18. 18

    Blazor에서 매개 변수를 사용하여 함수를 호출하는 방법은 무엇입니까?

  19. 19

    jQuery에서 매개 변수를 사용하여 JavaScript 함수를 호출하는 방법은 무엇입니까?

  20. 20

    Laravel 5-db 삽입을 위해 laravel 배열에 여러 매개 변수를 추가하는 방법은 무엇입니까?

  21. 21

    FastAPI에서 빈 매개 변수를 허용하지 않는 방법은 무엇입니까?

  22. 22

    vue-quill 편집기에서 여러 매개 변수를 내보내는 방법은 무엇입니까?

  23. 23

    다음 js-api의 URL에 여러 매개 변수를 전달하는 방법은 무엇입니까?

  24. 24

    웹 API에 여러 매개 변수를 전달하는 방법은 무엇입니까?

  25. 25

    Cucumber 단계에 여러 매개 변수를 전달하는 방법은 무엇입니까?

  26. 26

    URL의 여러 매개 변수를 iOS의 웹보기에 전달하는 방법은 무엇입니까?

  27. 27

    위치 매개 변수를 유지하는 파이프에서 읽는 방법은 무엇입니까?

  28. 28

    Windows 레지스트리의 전체 파일 이름 (공백 포함)을 매개 변수로 배치 파일에 전달하는 방법은 무엇입니까?

  29. 29

    파이썬에서 매개 변수화 된 함수 세트를 만드는 방법은 무엇입니까?

뜨겁다태그

보관