2013-06-21 2 views
4

에 터지는 명령 창을 피하기 위해 :내가 명령을 어떻게 cmd.exe를

cmd.exe /c ping 1.1.1.1 -n 1 -w 10000 && echo second command goes here 

하지만 실행될 때 명령 창을 엽니 다. 명령 창이 터지지 않도록하는 방법이 있습니까?

추신 : 거기에서 cmd.exe를 제거 할 수 없습니다. 보시다시피, 나는 같은 문자열에 두 개의 명령을 차례로 연결하려고합니다.

감사합니다.

편집 : 죄송합니다. 박쥐 파일이 아니야. msiexec의 "UninstallString"에서 2 개의 명령을 실행하고 싶습니다. 나는 내 질문에 조금이라도 가만히 던 많은 것들을 시도하고 있었다.

명령은 다음과 같습니다

msiexec <product> <package> && reg delete /xxx 
+0

분명히 cmd.exe를 제거 할 수 있습니다. 잠재적 인 답변에 제한을 두는 대신 이러한 제한을 제거하는 것이 좋습니다. –

+2

배치 파일은 항상 콘솔 창을 엽니 다. 이것이 문제가된다면 VBScript를 대신 사용해보십시오. 추가 읽기 : [실행시 명령 프롬프트를 표시하지 않는 Windows 배치 파일은 어떻게 만듭니 까?] (http://superuser.com/q/233348) –

답변

6

가장 간단한 옵션은 최소화 된 것을 시작하는 것입니다. 바로 가기 대상 :

cmd /c START /MIN \path\to\test.bat 

또는

그것은 숨겨진 또는 아무것도 아니에요
cmd /c START /MIN cmd /k (ping 1.1.1.1 -w 10000 -n 1 && @ECHO All OK) 

하지만 바탕 화면에 표시되지 않거나 - 더 - 훔치는 초점을.

"cmd/c ..."를 클릭하면 창이 사라지게됩니다. "cmd/k ..."를 누르면 창이 열립니다.

플랜 B는 게시 한 SU 링크에서 @CodyGray가 참조합니다. wperl, pythonw 또는 wscript (Windows에서 기본적으로 사용 가능)와 같은 창을 열지 않는 프로그램이 있습니다. 그 중 하나에 명령을 전달할 수 있다면 효과적으로 아이콘을 두 번 클릭하여 "자동으로 실행"할 수 있습니다."

다른 파일을 만들 필요하지 않습니다 꽤 강력한 한 라이너를 정교하게 할 수 있기 때문에 가능한 펄의, 나는 확실히로 이동하세요. 당신의 예에서

wperl -MWin32 -MNet::Ping -e "$p=Net::Ping->new('icmp',10000); if ($p->ping('192.168.1.1')) { Win32::MsgBox('Ping Successful', 1 + MB_OK, 'All Good'); }" 

, 당신은 체인있어 명령을 함께 사용하면 후자는 알림입니다. 첫 번째 명령에 대해 창을 열지 않으려면 사용자에게 사용자에게 알릴 때 두 번째 명령을 수행하는 것이 어려울 수 있습니다. cmd/c cmd를 시작합니다./c @echo Everything OK "라고 쓰면 CMD 창을 사용하여 사용자에게 알릴 수 있습니다.

+0

나는 더 분명해야했다. msiexec이 패치를 제거하기 위해 제공하는 "한 줄"에 두 명령을 실행하고 싶습니다. 두 번째 명령은 레지스트리 정리입니다. – sambha

+0

Thankss.cmd/c START/MIN cmd/c && 그랬습니다. 명령을 연결하는 것이 중요했습니다. msiexec uninstallstring을 위해 MS에서 제공 한 하나의 문자열에 여러 명령을 넣고 싶습니다. echo는 질문을 위해 고른 예제 명령 (잘못된 것)이었습니다. – sambha

2

아니, 명령 줄 창에서 열려있는 모든 배치 파일; 이는 특정 파일에 cmd.exe이 있는지 여부와 아무 관련이 없습니다. 배치 파일은 한 줄에 하나씩 많은 명령 행 명령입니다.

나는 당신이하는 방식으로 test.bat을 쓰는 이유를 이해할 수 없다. 일부 희한 이유로, 당신이 정말로 단 하나의 선을 사용해야하는 경우 오히려 Andreas Rejbrand 이미 설명했듯이 단순히

ping 1.1.1.1 -n 1 -w 10000 && echo second command goes here 
+0

나쁘다. 나는 그 질문을 편집했다. – sambha

2

을 할 수

ping 1.1.1.1 -n 1 -w 10000 
echo second command goes here 

을 기대, 명령 프롬프트 창입니다 스크립트 내에서 명시적인 cmd.exe 호출이 아니라 .bat 스크립트 자체를 실행하는 것입니다. (그리고 당신의 주장에도 불구하고, 당신은. 명시 적으로 cmd.exe가 필요한 호출하는 이유는 증거를 제공하지 않은 .bat 스크립트의 요점 함께 명령배치하는 것입니다.)

말했다

silentbatch 프로그램 바울 광부와 배치 스크립트를 실행하고 명령 프롬프트 창을 표시하지 않을 수 있다고 썼습니다. 이를 사용하려면 silentbatch.exe test.bat을 호출하는 Windows 바로 가기를 만들어야하고 test.bat을 직접 두 번 클릭하지 말고 두 번 클릭해야합니다.

+0

링크 된 프로그램은 어떻게 작동합니까? 콘솔 창을 표시하고 닫을 때까지 대기합니까? –

+0

@CodyGray 스크립트에서'CreateProcess'를 호출하지만'STARTUPINFOW :: wShowWindow'를 SW_HIDE로 설정합니다 (옵션으로 stdout과 stderr를 로그 파일로 리디렉션합니다). 소스 코드가 포함되어 있습니다. – jamesdlin

+0

제 잘못입니다. 질문을 수정했습니다. – sambha

1

배치 스크립트의 바로 가기를 생성 한 다음 속성 선택에서 최소화 된 응용 프로그램을 시작할 수도 있습니다. 여기에 설명되어 있습니다 : CNET: How to automatically start a program minimized in Windows

1 단계 : 최소화하려는 프로그램의 바로 가기를 마우스 오른쪽 버튼으로 클릭하고 속성을 선택하십시오.
2 단계 : 실행 아래의 드롭 다운 메뉴를 클릭하십시오.
3 단계 : "최소화"를 선택한 다음 확인 버튼을 클릭하십시오.

+1

링크를 연결하는 것이 좋습니다. 일반적으로 사람들이하는 일은 대답 내의 관련 부분을 복사하는 것입니다. 이것은 링크가 미래에 언젠가 중단되어 응답을 쓸모없이 남겨 둘 수 있기 때문입니다. –

관련 문제