숫자가 다를 수 있으므로 여러 인수에 대해 명령 배치 스크립트에 변수를 넣고 싶습니다. 쉘에서와 마찬가지로 $@를 사용합니다. 여러 가지를 시도했지만 아무것도 작동하지 않습니다.
[편집: %*가 작동한다는 것을 알고 있지만 실제로는 첫 번째 인수를 제거하고 나머지를 변수에 할당하려면 SHIFT 연산자를 사용해야 했습니다. 하지만 SHIFT를 하고 %*를 확인하면 유닉스 쉘과 달리 여전히 원래 인수가 모두 표시됩니다.]
현재 저는 FOR 루프를 사용하여 이를 수행하고 있지만 첫 번째 인수를 POP하고 나머지를 다른 변수에 할당하는 다른 명령/방법이 있는지 알고 싶었습니다.
예: SomeCommand "다중 인수"
답변1
%*
배치 파일에는 스크립트에 전달된 모든 인수(스크립트 이름 자체 제외)가 작성된 그대로 유지됩니다.
다음 사항도 유용할 수 있습니다.
%0
- 배치 파일을 호출하는 데 사용되는 명령( foo
, ..\foo
, 등일 수 있음 c:\bats\foo.bat
)
%1
은 첫 번째 명령줄 매개변수
%2
이고 두 번째 명령줄 매개변수입니다 .
%9
옮기다
9일 이후부터 사용 가능합니다.
보다 방법: Windows 배치 파일에 명령줄 인수(Parameters) 전달.
SHIFT
다음 명령에 대한 사용 예 :
batchfile.bat The Quick Brown
- 주어진 대로:
%0
=The Quick Brown,%1
=The,%2
=Quick,%3
=Brown. - SHIFT 후:
%0
=The Quick Brown,%1
=Quick,%2
=Brown - 두 번째 SHIFT 후:
%0
=The Quick Brown,%1
=Brown
"첫 번째 매개변수를 제외한 모든 것"에 대한 질문에는 좋은 대답이 없습니다. 배치 언어는 가능한 모든 매개변수에 대해 작동하는 방법에 비해 충분히 정확하지 않으므로 SHIFT를 사용하는 것이 가장 좋은 방법입니다.
가능한 해결책에 대한 토론은 게시물에서 찾을 수 있습니다.
배치 파일의 마지막 n개 매개변수를 표시하는 방법이 있습니까?