2013-02-02 2 views
2

정기적으로 사용하는 몇 가지 일반적인 doskey 명령을 만듭니다. 나는 doskey 매크로에 여러 변수를 넣으려고하고 때로는 변수에 공백이있을 수 있습니다. 변수 값을 인용하려고했지만 작동하지 않습니다. 작동하는 유일한 방법은 매크로 문자열 끝에 더 많은 vars를 추가하는 것입니다.전달 된 변수에 공백이있는 Doskey 매크로?

내가 뭘하고 싶은 것입니다 : DOSKEY keycmd = 다음과 같이 -l 사용자 -pw 암호 $ (1) -batch $ 2 그리고 그것을 실행을 가용 스루풋 : C :> keycmd 호스트 이름 "DIR/P/사용자"

doskey가 실행될 때 표시되는 내용은 다음과 같습니다. $ 1 = hostname, $ 2 = "dir,"dir은 명령이 아니며/p 및/users는 완전히 삭제됩니다.

하면이 내가 이런 식으로 정의했다 작동하도록하려면 DOSKEY keycmd = -l 사용자 -pw 암호 $ (1) -batch $ 2 $ 3 $ 4 다음과 같이 실행 가용 스루풋 : C를 :> keycmd 호스트 디렉토리/P/사용자

하나의 $ 2 변수에 "dir/p/users"를 그룹화 할 수있는 방법이 있습니까? doskey 변수 매개 변수의 경우 9, $ 1 .. $ 9 만 얻을 수 있습니다. 결국 나는 복잡한 명령을 다 써 버릴 수있었습니다. 단일 및 이중 따옴표를 아무 소용이 시도했지만 ... 및/또는 이중 따옴표는 Windows cmd 명령에서 다른 모든 곳에서 작동하는 것 같습니다.

거기에 대한 해결책이 있습니까, 아니면 그냥 doskey로 너무 많이하려고하는 것입니까?

답변

1

이렇게해야합니다. 마지막 매개 변수에 공백이있을 수 있지만

keycmd=echo plink -l user -pw password $1 -batch $* 
0

다른 모든 것들에게로 마지막 VAR에게 (같이 $*를 사용하여 wild2010answer), DOSKEY에 공백이 매개 변수를 포함하는 일반적수 없습니다 명령.

Using Doskey를 참조하십시오 : 매개 변수가 긴 파일 이름이 될 수 있지만

불행하게도, 그것은 인용 부호로 묶인 경우에도 공백을 포함 할 수 없습니다. 파일명에 공백이 있으면
, 그것은 ** use the 8.3 version of the name 할 필요가있다. 이 문제에 대해서는 아무 것도 모른다 **.

DOSKEY 매크로는 또한 "글로벌 대체 매개 변수"라고한다 $*를 사용할 수 있습니다.
이것은 매크로의 마지막 부분이어야하며 매크로 이름이 아니거나 번호가 매겨진 매개 변수에 할당 된 명령 줄의 항목으로 대체됩니다. 공간은 파일 이름 -와 - 최종 매개 변수로 사용될 수

DOSKEY D2F=DIR $1 $g $* 

다음 긴 -하지만 경로 이름은 포함되지 수 여전히 $1 대용으로 사용 :
위의 예는 다음과 같이 다시 쓸 경우 디렉토리 이름은 공백으로 채 웁니다.

관련 문제