프로그램이 시작된 후 콘솔을 열어 두지 않고 배치 파일에서 프로그램을 실행하려면 어떻게해야합니까?


184

현재 내 배치 파일은 다음과 같습니다.

myprogram.exe param1

프로그램이 시작되지만 DOS 창이 열려 있습니다. 닫을 수 있습니까?


3
허용 된 답변을 Marshall이 게시 한 답변으로 변경해야합니다.
Rev1.0

답변:


163

exit 키워드를 사용할 수 있습니다. 다음은 내 배치 파일 중 하나의 예입니다.

start myProgram.exe param1
exit

18
배치 파일을 두 번 클릭하는 대신 대화식으로 콘솔을 사용하는 경우 좋지 않습니다. 일반적으로 exit배치 파일에 넣을 필요가 거의 없습니다 .
Joey

27
Win8 에서이 명령을 시도했습니다. 그것이 다른지 확실하지 않지만 첫 번째 매개 변수로 Window 제목을 제공해야합니다. Patrick이 설명한 방식으로 실행하면 "myProgram.exe"를 창 제목으로 사용하여 새 명령 프롬프트를 엽니 다.start "VPN" "C:\Program Files (x86)\Cisco\Cisco AnyConnect Secure Mobility Client\vpnui.exe"
Adam Plocher

9
명령에 공백이 있고 따옴표로 묶은 경우 START는 첫 번째 따옴표로 묶은 매개 변수를 창 이름으로 해석하고 다음 두 번째 매개 변수 만 명령 이름으로 해석하므로 따옴표로 묶은 매개 변수를 추가해야합니다.
David Balažic

259

배치 파일이 프로그램을 기다리지 않도록하려면 start 명령을 사용하십시오. "시작"후에 실행하려는 프로그램 앞에 빈 큰 따옴표를 넣어야합니다. 예를 들어 배치 명령에서 Visual Studio 2012를 실행하려는 경우 :

Start ""  "C:\Program Files (x86)\Microsoft Visual Studio 11.0\Common7\IDE\devenv.exe"

시작 후 큰 따옴표를 확인하십시오.


55
@SharkAlley 올바른 형식은 다음과 같습니다start <window name> <program name>
Kruug

5
이것이 정답입니다. 감사합니다, 빈 큰 따옴표는 내가 필요한 것입니다.
Richard

매주 실행되는 백업 스크립트가있어 매주 약간 씩 수정하여 a) 프로그램을 닫고 b) 데이터를 백업하며 c) 프로그램을 다시 시작하고 명령 프롬프트를 닫으려고합니다. 마지막으로 명령 프롬프트를 닫았습니다 (다음 백업이 트리거되지 않도록 명령 프롬프트를 닫아야했습니다 !!!).
NobleUplift

@NobleUplift : 저에게 이것은 효과가있었습니다. 아래는 정확한 줄입니다. 시작 "" "C : \ Program Files (x86) \ JetBrains \ IntelliJ IDEA 2016.2.5 \ bin \ idea64.exe"&
Xinus

53

START 명령을 보면 다음과 같이 할 수 있습니다.

START rest-of-your-program-name

예를 들어이 배치 파일은 메모장이 종료 될 때까지 기다립니다.

@echo off
notepad c:\test.txt

그러나 이것은 :

@echo off
start notepad c:\test.txt

31

자신의 질문에서 :

start /b myProgram.exe params...

기존 DOS 세션에서 프로그램을 시작하면 작동합니다.

그렇지 않으면 VB 스크립트를 호출하십시오.

wscript.exe invis.vbs myProgram.exe %*

Windows 스크립트 호스트 실행 () 메소드를 취합니다

  • intWindowStyle : 0은 "보이지 않는 창"을 의미합니다
  • bWaitOnReturn : false는 첫 번째 스크립트가 두 번째 스크립트가 끝날 때까지 기다릴 필요가 없음을 의미합니다

다음은 invis.vbs입니다.

set args = WScript.Arguments
num = args.Count

if num = 0 then
    WScript.Echo "Usage: [CScript | WScript] invis.vbs aScript.bat <some script arguments>"
    WScript.Quit 1
end if

sargs = ""
if num > 1 then
    sargs = " "
    for k = 1 to num - 1
        anArg = args.Item(k)
        sargs = sargs & anArg & " "
    next
end if

Set WshShell = WScript.CreateObject("WScript.Shell")

WshShell.Run """" & WScript.Arguments(0) & """" & sargs, 0, False

1
+1 더 쉬운 방법이 있어야하지만 이것이 저에게 도움이되는 유일한 해답입니다.
DN

고마워-/ b 플래그는 내가 찾던 것입니다.
ap

21

이것은 배치 파일에서 Java 클래스를 실행하려고 할 때 나를 위해 일한 유일한 것입니다.

start "cmdWindowTitle" /B "javaw" -cp . testprojectpak.MainForm

start적절한 구문에 따라 프로젝트에 원하는대로 명령을 사용자 정의 할 수 있습니다 .

Syntax
      START "title" [/Dpath] [options] "command" [parameters]

Key:
   title      : Text for the CMD window title bar (required)
   path       : Starting directory
   command    : The command, batch file or executable program to run
   parameters : The parameters passed to the command

Options:
   /MIN       : Minimized
   /MAX       : Maximized
   /WAIT      : Start application and wait for it to terminate
   /LOW       : Use IDLE priority class
   /NORMAL    : Use NORMAL priority class
   /HIGH      : Use HIGH priority class
   /REALTIME  : Use REALTIME priority class

   /B         : Start application without creating a new window. In this case
                ^C will be ignored - leaving ^Break as the only way to 
                interrupt the application
   /I         : Ignore any changes to the current environment.

   Options for 16-bit WINDOWS programs only

   /SEPARATE   Start in separate memory space (more robust)
   /SHARED     Start in shared memory space (default)

18

이것을 시도해야합니다. 창없이 프로그램을 시작합니다. 실제로 1 초 동안 깜박이지만 상당히 빨리 사라집니다.

start "name" /B myprogram.exe param1

4
"title"옵션은 중요합니다. 프로그램 경로에 공백이 있으면 따옴표로 묶어야하므로 "title"실패를 피하기 위해 추가해야합니다 .
AD

1
주 창을 닫으면 백그라운드 프로세스 'myprogram.exe'도 닫힙니다.
Aditya Gupta

14

"공간 문제"및 로컬 종속성을 해결하는 방법 :

@echo off
cd "C:\Program Files\HeidiSQL"
start heidisql.exe

cd "C:\Program Files (x86)\Google\Chrome\Application"
start chrome.exe

exit

이것은 질문에 대한 답변이 아닙니다
jeb

2
사실이지만 다른 문제도 해결할 수있는 좋은 솔루션을 제공한다고 생각합니다.
Gilco

2
나를위한 해결책이었습니다. Dos 창이 열리지 만 다시 닫히고 솔루션이 작동합니다. 나는 downvotes (나는 upvoted)를 이해하지 못한다
JoeFox

나도. 솔루션이 작동하고 문제를 해결
Gilco

2

이 질문에 대한 답변은 이미 많이 있지만 중요한 내용을 명확히하기 위해 게시하고 있지만 항상 그런 것은 아닙니다.

Start "C:\Program Files\someprog.exe"

Start실제로 일부 인용 부호는 창 제목이 될 것으로 예상하므로 일부 Windows 버전에서는 문제가 발생할 수 있습니다 . 따라서 먼저 주석 또는 빈 주석을 큰 따옴표로 묶는 것이 가장 좋습니다.

Start "" "C:\Program Files\someprog.exe"

또는

Start "Window Title" "C:\Program Files\someprog.exe"

0

GUI 에서이 작업을 수행하는 솔루션 :

  1. 실행할 프로그램에 대한 바로 가기를 만듭니다.

  2. 바로 가기 속성을 편집하십시오.

  3. TARGET필드를 %COMSPEC% /C "START "" "PROGRAMNAME"";로 변경하십시오 .

  4. RUN필드를 최소화로 변경하십시오 .

준비된! 당신이 그것을 좋아하는 방법을 참조하십시오 ...

PS : 두 개의 마지막 따옴표 사이에 프로그램 매개 변수를 삽입 할 수 있습니다. PROGRAMNAME문자열이 파일 이름, 상대 또는 절대 경로가 될 수 있습니다 - 당신은 절대 경로에 넣고 드라이브 문자 및 세미콜론을 삭제하는 경우, 다음이가에서 작동 어떤 편지 쓰기 호스트 컴퓨터의 양수인 그것에 상관없이 썸 .. . (같은 폴더에 바로 가기를 배치하고있는 프로그램의 파일 이름 앞에 경우도 PROGRAMNAME%CD%변수, 경로는 항상 일치, 같은 트릭을 사용할 수 있습니다 START IN필드).


0

이 배치 파일이 예약 된대로 또는 항상 실행하려는 것이라면; Windows 일정 도구를 사용할 수 있으며 배치 파일을 시작할 때 창에서 열리지 않습니다.

열려면 Task Scheduler:

  • 시작-> 실행 / 검색-> 'cmd'
  • 유형 taskschd.msc-> 입력

오른쪽에서을 클릭 Create Basic Task하고 메뉴를 따릅니다.

도움이 되었기를 바랍니다.


0

여기 내가 선호하는 해결책이 있습니다. 비슷한 질문에 대한 답변 에서 가져옵니다 .

VBS 스크립트를 사용하여 배치 파일을 호출하십시오.

Set WshShell = CreateObject("WScript.Shell")
WshShell.Run chr(34) & "C:\path\to\your\batchfile.bat" & Chr(34), 0
Set WshShell = Nothing

위의 줄을 편집기에 복사하고 파일을 .VBS 확장자로 저장하십시오.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.