programing

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

sourcejob 2023. 4. 24. 23:09
반응형

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

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

myprogram.exe param1

프로그램은 기동하지만, DOS 창은 열린 채로 있습니다.어떻게 닫지?

start 명령어를 사용하여 배치파일이 프로그램을 대기하지 않도록 합니다."시작" 뒤에 실행할 프로그램 앞에 빈 큰따옴표를 넣기만 하면 됩니다.예를 들어 배치 명령에서 Visual Studio 2012를 실행하려면 다음과 같이 하십시오.

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

시작 후 큰따옴표를 확인합니다.

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

start myProgram.exe param1
exit

START 명령어는 다음과 같이 실행할 수 있습니다.

START rest-of-your-program-name

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

@echo off
notepad c:\test.txt

단, 이것은 다음과 같이 되지 않습니다.

@echo off
start notepad c:\test.txt

만의 질문입니다.

start /b myProgram.exe params...

는 기존 DOS 세션에서 프로그램을 시작할 때 작동합니다.

그렇지 않으면 vb 스크립트를 호출합니다.

wscript.exe invis.vbs myProgram.exe %*

Windows Script Host Run() 메서드는 다음과 같습니다.

  • 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

배치 파일에서 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)

이거 드셔보세요.윈도우 없이 프로그램이 시작됩니다.사실 순간적으로 반짝거리지만 꽤 빨리 사라집니다.

start "name" /B myprogram.exe param1

공간 문제 및 로컬 종속성 해결 방법:

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

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

exit

이 질문에 대한 답변은 이미 많지만, 중요한 점을 강조하기 위해 이 글을 올렸습니다.

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

위의 경우 일부 윈도 버전에서는 다음과 같은 문제가 발생할 수 있습니다.Start님은 실제로 첫 번째 따옴표 세트가 윈도 타이틀이 될 것으로 예상하고 있습니다.따라서 먼저 코멘트 또는 빈 코멘트를 이중 따옴표로 묶는 것이 가장 좋습니다.

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

또는

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

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

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

  2. 바로 가기 속성을 편집합니다.

  3. 를 변경하다TARGET까지 수비하다.%COMSPEC% /C "START "" "PROGRAMNAME"";

  4. 를 변경하다RUN필드를 최소화합니다.

준비! 마음에 드는지 봐...

PS: 프로그램 파라미터는 두 개의 최종 따옴표 사이에 삽입할 수 있습니다.PROGRAMNAME문자열은 파일 이름, 상대 경로 또는 절대 경로 중 하나일 수 있습니다. 절대 경로에 드라이브 문자와 세미콜론을 지우고 나면 호스트 컴퓨터가 할당한 문자에 관계없이 썸 드라이브에서 작동합니다.(또한 숏컷을 같은 폴더에 배치하고 프로그램 파일 이름 앞에 있는 경우,PROGRAMNAME%CD%일치합니다.을 「동일」, 「동일」로 할 수 .같은 트릭을 사용할 수 있습니다.START IN필드)를 참조해 주세요.

이 배치 파일이 일정대로 또는 항상 실행되어야 하는 경우 Windows 스케줄 도구를 사용할 수 있으며 배치 파일을 시작할 때 창이 열리지 않습니다.

Task Scheduler:

  • >> > > -> 검 / > ->'cmd'
  • 「」라고 입력합니다.taskschd.msc> 력 -

[ ]을 합니다.Create Basic Task메뉴를 따라갑니다.

이게 도움이 됐으면 좋겠다.

여기 제가 선호하는 솔루션이 있습니다.그것은 비슷한 질문에 대한 대답에서 따온 것이다.

VBS 스크립트를 사용하여 배치 파일을 호출합니다.

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

위의 행을 편집기에 복사하고 파일을 저장합니다.VBS 내선

언급URL : https://stackoverflow.com/questions/324539/how-can-i-run-a-program-from-a-batch-file-without-leaving-the-console-open-after

반응형