새 창에서 실행하는 경우에만 "일시 중지"하는 방법은 무엇입니까?

새 창에서 실행하는 경우에만 "일시 중지"하는 방법은 무엇입니까?

%1파일 경로를 가정하는 배치 스크립트를 작성했습니다 . 때로는 Windows 탐색기에서 끌어서 놓기를 통해 이 배치 스크립트를 사용하고 싶고(대상 파일을 배치 스크립트 파일로 드래그) 다른 경우에는 기존 명령 프롬프트 창에서 이 배치 스크립트를 실행하고 내 정보를 제공하고 싶습니다. %1경로를 명시적으로 지정합니다(일반적으로 상대 경로).

"드래그 드롭" 시 스크립트가 즉시 사라지는 것을 원하지 않으므로 pause. 하지만 any key to continue기존 명령 프롬프트 창을 사용할 때 매번 키를 누르는 것을 원하지 않아서 pause.

두 세계의 장점을 모두 누릴 수 있는 방법이 있나요? 내가 처해 있는 시나리오를 어떻게든 감지/추론하고 이후에 일시 중지할지 여부를 결정할 수 있나요? 여기서 가장 좋은 접근 방식은 무엇입니까?

답변1

배치 파일에서 이것을 사용해보십시오.

set arg0=%0
if [%arg0:~2,1%]==[:] pause

0번째 인수(기본적으로 배치 파일 이름 자체)의 세 번째 문자가 콜론인지 여부를 확인합니다.

일반적으로 배치 파일에 항목을 끌어다 놓으면 다음과 같이 호출됩니다. "Drive:\path\to\Batch File.bat" Arg1 Arg2 ...그러나 명령 프롬프트에서 배치 파일을 실행할 때는 일반적으로 따옴표로 묶인 절대 경로를 사용하여 그렇게 호출하는 경향이 없습니다. 따라서 우리는 이 차이점을 이용하여 pause콜론이 세 번째 문자로 존재할 때만 a를 실행할 수 있습니다. 이는 배치 파일이 드래그 앤 드롭을 통해 실행되었음을 암시합니다. 물론 명령 프롬프트에서 배치 파일을 실행하기 위해 인용된 절대 경로를 사용하는 경우에도 자연스럽게 실행됩니다 pause.

답변2

cmd /k스크립트 끝에 를 던져보세요 . 기존 창에서는 명령 프롬프트로 돌아가고 새 창에서는 동일한 작업을 수행하여 창을 열어 둡니다.

@echo off
echo "some text"
cmd /k

/k는 다음 인쇄를 중지하는 것입니다.

Microsoft Windows [버전 6.1.7601] 저작권 (c) 2009 Microsoft Corporation. 판권 소유.

관련 정보