다른 .EXE 파일을 실행하는 .BAT 파일의 명령 창 숨기기
이것은 Windows의 배치 파일입니다.
다음은 내 .bat 파일입니다.
@echo off
copy "C:\Remoting.config-Training" "C:\Remoting.config"
"C:\ThirdParty.exe"
.bat 파일이 "ThirdParty"응용 프로그램이 실행되는 동안 명령 창을 열어 두는 것을 제외하고는 정상적으로 작동합니다.
닫으려면 명령 창이 필요합니다.
응용 프로그램에 대한 바로 가기를 사용하지만 먼저이 복사 명령을 실행할 수 있어야합니다 (실제로 응용 프로그램에 사용할 데이터베이스와 서버가 변경됨).
타사 응용 프로그램은 사용자가 db 또는 응용 프로그램 서버의 소스를 변경하는 것을 허용하지 않습니다.
이는 사용자가 테스트 환경에서 프로덕션 환경으로 변경할 수 있도록하기위한 것입니다.
start
나를 위해 작품 사용 :
@echo off
copy "C:\Remoting.config-Training" "C:\Remoting.config"
start C:\ThirdParty.exe
편집 : 좋아, 더 자세히 보면 start
인용 된 경우 첫 번째 매개 변수를 새 창 제목으로 해석하는 것 같습니다. 따라서 ThirdParty.exe 경로를 인용해야하는 경우 제목 문자열도 제공해야합니다.
예 :
:: Title not needed:
start C:\ThirdParty.exe
:: Title needed
start "Third Party App" "C:\Program Files\Vendor\ThirdParty.exe"
다음 .vbs
코드 로 파일을 만듭니다 .
CreateObject("Wscript.Shell").Run "your_batch.bat",0,True
이것은 숨겨진 상태로 .vbs
실행됩니다 your_batch.bat
.
나를 위해 잘 작동합니다.
이 시도:
@echo off
copy "C:\Remoting.config-Training" "C:\Remoting.config"
start C:\ThirdParty.exe
exit
좋은 팁. Java 프로그램을 실행하는 배치 파일에서도 작동합니다.
start javaw -classpath "%CP%" main.Main
start
스크립팅 언어를 사용하지 않는 한 사용하면 잘 작동합니다. 다행히도 Python을위한 방법이 있습니다. pythonw.exe
대신 다음을 사용 python.exe
하세요.
:: Title not needed:
start pythonw.exe application.py
따옴표가 필요한 경우 다음을 수행하십시오.
:: Title needed
start "Great Python App" pythonw.exe "C:\Program Files\Vendor\App\application.py"
기본적으로 그렇게하는 좋은 방법을 찾지 못했기 때문에 hstart 라는 유틸리티를 사용합니다 . 더 깔끔한 방법이 있다면 좋을 것입니다.
/ 스크립트 를 실행 하고 명령 프롬프트 창 생성을 완전히 억제 (따라서 표시되었다가 사라지는 것을 볼 수 없음)하고 선택적으로 출력을 지정된 파일에 기록 하는 내 silentbatch 프로그램 을 사용해 보는 것이 좋습니다..bat
.cmd
창을 강제로 숨기는 VBS 스크립트를 만들 수 있습니다.
Set WshShell = WScript.CreateObject("WScript.Shell")
obj = WshShell.Run("""C:\Program Files (x86)\McKesson\HRS
Distributed\SwE.bat""", 0)
set WshShell = Nothing
그런 다음 배치 파일을 실행하는 대신 스크립트를 실행하십시오.
Batch2Exe http://www.f2ko.de/programs.php?lang=en&pid=b2e를 사용하여 배치 파일을 실행 파일로 컴파일합니다 . "보이지 않는 창"옵션을 사용하십시오.
또는 다음을 사용할 수 있습니다.
Start /d "the directory of the executable" /b "the name of the executable" "parameters of the executable" %1
% 1이 파일이면 실행 파일로 전달됩니다. 예를 들어 notepad.exe foo.txt
% 1에서 "foo.txt"입니다.
/b
시작 명령 의 매개 변수는 다음을 수행합니다.
새 명령 프롬프트 창을 열지 않고 응용 프로그램을 시작합니다. CTRL+ C처리는 응용 프로그램이 CTRL+ C처리를 활성화하지 않는 한 무시됩니다 . CTRL+ BREAK를 사용 하여 응용 프로그램을 중단합니다.
정확히 우리가 원하는 것입니다.
다른 사용자로 실행하십시오. 이것이 창 상자라고 가정하고 예약 된 작업에 대한 사용자 계정을 만듭니다. 해당 사용자로 실행하십시오. 명령 프롬프트는 현재 로그인 한 사용자에게만 표시됩니다.
위의 방법은 작동하지 않습니다. Windows Server 2003에서 테스트했습니다.
@echo off
copy "C:\Remoting.config-Training" "C:\Remoting.config"
Start /I "" "C:\ThirdParty.exe"
exit
Windows API를 사용하여 새 프로세스, 콘솔 응용 프로그램을 시작하고 "검은 색"창을 숨길 수 있습니다. 이는 프로세스 생성시 수행 할 수 있으며 "검은 색"창을 전혀 표시하지 않도록합니다.
에서 의 CreateProcess 함수 dwCreationFlags
매개 변수를 가질 수 CREATE_NO_WINDOW의 플래그 :
The process is a console application that is being run
without a console window. Therefore, the console handle
for the application is not set. This flag is ignored if
the application is not a console application
다음은 이 메서드와 소스 코드를 사용 하는 hide-win32-console-window 실행 파일에 대한 링크 입니다.
hide-win32-console-window
Jamesdlin의 silentbatch 프로그램 과 유사합니다 .
열린 질문이 있습니다. 프로그램의 창이 존재하지 않을 때 프로그램의 출력을 어떻게해야합니까? 예외가 발생하면 어떻게됩니까? 출력을 버리는 좋은 해결책이 아닙니다. hide-win32-console-window
익명 파이프를 사용하여 프로그램의 출력을 현재 디렉터리에 생성 된 파일로 리디렉션합니다.
용법
batchscript_starter.exe 전체 / 경로 / 대상 / 응용 프로그램 [ 전달할 인수 ]
Python 스크립트 실행 예
batchscript_starter.exe c:\Python27\python.exe -c "import time; print('prog start'); time.sleep(3.0); print('prog end');"
출력 파일은 python.2019-05-13-13-32-39.log
python 명령의 출력으로 명명 된 작업 디렉토리에 생성됩니다 .
prog start
prog end
실행 명령의 예
batchscript_starter.exe C:\WINDOWS\system32\cmd.exe /C dir .
출력 파일은 cmd.2019-05-13-13-37-28.log
CMD의 출력으로 명명 된 작업 디렉터리에 생성됩니다 .
Volume in drive Z is Storage
Volume Serial Number is XXXX-YYYY
Directory of hide_console_project\hide-win32-console-window
2019-05-13 13:37 <DIR> .
2019-05-13 13:37 <DIR> ..
2019-05-13 04:41 17,274 batchscript_starter.cpp
2018-04-10 01:08 46,227 batchscript_starter.ico
2019-05-12 11:27 7,042 batchscript_starter.rc
2019-05-12 11:27 1,451 batchscript_starter.sln
2019-05-12 21:51 8,943 batchscript_starter.vcxproj
2019-05-12 21:51 1,664 batchscript_starter.vcxproj.filters
2019-05-13 03:38 1,736 batchscript_starter.vcxproj.user
2019-05-13 13:37 0 cmd.2019-05-13-13-37-28.log
2019-05-13 04:34 1,518 LICENSE
2019-05-13 13:32 22 python.2019-05-13-13-32-39.log
2019-05-13 04:55 82 README.md
2019-05-13 04:44 1,562 Resource.h
2018-04-10 01:08 46,227 small.ico
2019-05-13 04:44 630 targetver.h
2019-05-13 04:57 <DIR> x64
14 File(s) 134,378 bytes
3 Dir(s) ???,???,692,992 bytes free
.bat 스크립트 실행을위한 단축키 예
Target
들:
C:\batchscript_starter.exe C:\WINDOWS\system32\cmd.exe /C C:\start_wiki.bat
Start in
필드에 지정된 디렉토리 는 출력 파일을 보유합니다.
.exe 파일을 실행하는 .bat 파일의 명령 창을 최대한 빨리 종료 @start
하려면 실행하려는 파일 앞에있는 줄을 사용하십시오 . 다음은 그 예입니다.
(insert other code here)
@start executable.exe
(insert other code here)
.NET과 함께 다른 코드를 사용할 필요가 없습니다 @start executable.exe
.
이것을 사용하여 C #에서 cmd 파일을 시작했습니다.
Process proc = new Process();
proc.StartInfo.WorkingDirectory = "myWorkingDirectory";
proc.StartInfo.FileName = "myFileName.cmd";
proc.StartInfo.WindowStyle = ProcessWindowStyle.Hidden;
proc.Start();
proc.WaitForExit();
'programing' 카테고리의 다른 글
Golang을 사용하여 디렉토리의 모든 내용을 제거하는 방법은 무엇입니까? (0) | 2021.01.19 |
---|---|
Proguard 문제 "경고 : 익명 내부 클래스에 대한 InnerClasses 속성 무시" (0) | 2021.01.19 |
Clojure에서 부두 서버를 어떻게 중지합니까? (0) | 2021.01.19 |
마우스 오버시 툴팁이나 아이템 정보를 어떻게 표시합니까? (0) | 2021.01.19 |
리플렉션을 통해 activerecord 연결을 얻는 방법 (0) | 2021.01.19 |