사용자에게 아무것도 표시되지 않고 (창 없음, 작업 표시 줄 이름 없음 등) 배치 파일 (.bat)을 실행하는 방법을 찾고 있습니다.
나는 그것을하기 위해 일부 프로그램을 사용하고 싶지 않습니다. 나는 더 깨끗한 것을 찾고 있습니다. VBScript를 사용 하는 솔루션 을 찾았 지만 실제로 VBS를 사용하는 것을 좋아하지 않습니다.
사용자에게 아무것도 표시되지 않고 (창 없음, 작업 표시 줄 이름 없음 등) 배치 파일 (.bat)을 실행하는 방법을 찾고 있습니다.
나는 그것을하기 위해 일부 프로그램을 사용하고 싶지 않습니다. 나는 더 깨끗한 것을 찾고 있습니다. VBScript를 사용 하는 솔루션 을 찾았 지만 실제로 VBS를 사용하는 것을 좋아하지 않습니다.
답변:
해결책 1 :
이 한 줄의 텍스트를 파일로 저장하십시오 invisible.vbs
.
CreateObject ( "Wscript.Shell"). "" ""& WScript.Arguments (0) & "" "", 0, False를 실행하십시오.
프로그램 또는 배치 파일을 보이지 않게 실행하려면 다음과 같이 사용하십시오.
wscript.exe "C : \ Wherever \ invisible.vbs" "C : \ 일부 다른 장소 \ MyBatchFile.bat"
또한 인수 목록을 전달 / 릴레이하려면 두 개의 큰 따옴표 만 사용하십시오.
CreateObject ( "Wscript.Shell"). ""& WScript.Arguments (0) & "", 0, False를 실행하십시오.
예: Invisible.vbs "Kill.vbs ME.exe"
해결책 2 :
명령 줄 도구를 사용하여 프로세스를 자동으로 시작하십시오. Quiet , hidecon 또는 hideexec .
&
연결 문자열을 의미합니다. 문자열은 큰 따옴표 ( "
) 로 묶습니다 . ""
문자열 분리 문자 안에 연속 된 큰 따옴표 ( )는 리터럴 큰 따옴표 ( "
)를 의미합니다 . 따라서 네 개의 큰 따옴표 ( """"
)는 한 문자의 문자열 리터럴, 큰 따옴표 ( "
)입니다. 그것을 함께 넣고 """" & WScript.Arguments(0) & """"
될 것입니다 "<argument>"
, 어디 <argument>
스크립트에 전달 된 첫 번째 명령 행 인수입니다.
wscript.exe "C:\Wherever\invisible.vbs" ...
내부에 넣을 수있는 배치 파일을 만들어야 합니까?
배치 파일 또는 명령 파일 또는 파일을 숨기려면 ... Windows XP 기본 제공 IExpress.exe
유틸리티를 사용하여 배치 파일에서 .EXE를 빌드하십시오. 사용할 때 IExpress
실행 숨겨진 옵션을 확인하고 아무것도 표시하지 않도록 모든 상자를 선택하십시오. .exe를 만든 후 선택한 실행 명령 폴더에 파일을 저장하면 해당 파일이 나타나지 않습니다.
Cmdow 사용 은 NT4 / 2000 / XP / 2003 용 Win32 명령 줄 유틸리티로, 창을 나열, 이동, 크기 조정, 이름 변경, 숨김 / 숨김 해제, 비활성화 / 활성화, 최소화, 최대화, 복원, 활성화 / 비활성화, 종료, 종료 및 종료 가능 더.
매개 변수를 전달하여 숨겨진 배치 파일을 실행하십시오.
cmdow / run / hid mybat arg1 "arg 2"
배치 파일이 한 줄에 너무 많은 문자를 넣을 수있는 경우 임의의 디렉토리에있는 폴더 내부를 마우스 오른쪽 버튼으로 클릭하여 바로 가기를 사용하고 나머지 마법사를 건너 뛰고 마지막으로 만든 바로 가기를 마우스 오른쪽 버튼으로 클릭하십시오. 속성을 클릭하고 대상 아래에 일반적으로 박쥐 파일에 넣을 내용을 입력하십시오. 그리고 삼촌 밥!
장점 :
No Command Window
Ability to use an icon
Same Functionality of bat file
단점 :
Limited to one line, so many characters
대화식으로 작성하지 않고 at 작업을 통해 스크립트를 실행하십시오.
at 11:00 script.bat
또 다른 솔루션은 파이썬과 같은 것을 설치하는 것이 마음에 들지 않으면 간단히 스크립트를 작성하고 pythonw
(GUI 작업을위한 링크 된 버전)으로 실행할 수 있습니다. 그래픽 API를 사용하지 않기 때문에 창이 표시되지 않습니다. 단순히 호출을 사용 os.system()
하면 명령 줄에 문자열을 입력하는 것과 동일하므로 배치 스크립트를 모방합니다.
예:
import os
os.system("tasklist > C:\tasks.txt")
os.system("ipconfig /all > C:\netinfo.log")
Windows7을 사용하면 "예약 된 작업"제어판을 사용하여 배치 파일이 지정된 권한으로 "SYSTEM"계정으로 보이지 않게 백그라운드에서 실행되도록 예약 할 수 있습니다. 아래 스크린 샷을 참조하십시오 :
또한 기능이 많지는 않지만 '/ interactive'옵션없이 "AT.exe"명령을 사용하여 명령 줄에서 이와 같은 보이지 않는 배치 스크립트 작업을 만들 수도 있습니다.
VBScript 솔루션이 마음에 들지 않습니다.
nircmd.exe 를 다운로드 하여 %systemroot%\system32
폴더에 복사 한 다음 배치의 첫 번째 줄에이 명령을 추가하십시오.
nircmd.exe win hide ititle "cmd.exe"
또는 다음 과 같이 title
모든 cmd
창 을 숨기지 않도록 명령으로 배치 제목을 먼저 사용자 정의 하십시오.
title MyBatch
nircmd.exe win hide ititle "MyBatch"
누군가가 '자동'을 실행하는 7-8 가지 방법의 목록을 만든 것 같습니다.
http://forums.techguy.org/dos-other/644932-solved-howto-run-batch-file.html
C / C ++의 또 다른 방법은 CREATE_NO_WINDOW 플래그와 함께 CreateProcess 함수를 사용하는 것입니다. 여기에 표시되지 않은 추가 전원이 많이 있습니다. 이것은 system () 또는 _spawn () 제품군을 교체하는 데 필요한 최소값입니다.
STARTUPINFO si;
ZeroMemory( &si, sizeof(si) );
si.cb = sizeof(si);
PROCESS_INFORMATION pi;
ZeroMemory( &pi, sizeof(pi) );
// Spawn creates a cmd.exe window. CreateProcess doesn't.
//if ( _spawnl( _P_WAIT, szFileNameBAT, szFileNameBAT, NULL ) ) {
if ( !CreateProcess( szFileNameBAT, szFileNameBAT, NULL, NULL, false,
CREATE_NO_WINDOW, NULL, NULL, &si, &pi ) ) {
MyErrorFunc( "CreateProcess( \"%s\" ): %d", szFileNameBAT, GetLastError() );
goto MyErrorHandling;
}
WaitForSingleObject( pi.hProcess, INFINITE );
CloseHandle( pi.hProcess );
CloseHandle( pi.hThread );
우수한 Bat To Exe Converter 는 귀하 .bat
또는 .cmd
파일을 파일 로 변환합니다 .exe
.
간단한 UI가 있습니다. “보이지 않는 응용 프로그램”옵션을 선택하여 콘솔 창을 가지지 않도록 선택할 수 있습니다. 또한 아이콘, 패키지 관련 파일 및 기타 여러 옵션을 지정할 수 있습니다.
기본 인터페이스 창의 스크린 샷은 다음과 같습니다.
이 이미지는 오래되었습니다. 버전 2.4.8이 표시되며 2018 년 9 월 현재 웹 사이트는 버전 3.0.10.0 (최종 업데이트 2018-03-23)을 제공합니다.
이 방법 으로 nircmd를 사용 하여 성공적으로 수행했습니다 .
nircmd.exe win hide ititle "cmd.exe"
이제 .exe 파일을 만들었습니다. .exe 파일을 클릭하고 설치하면 .bat 파일이 완전히 숨겨집니다.
cmdow /run /hid "file.extention" arg1 "arg 2"
'cmdow' is not recognized as an internal or external command, operable program or batch file.
중복 된 이후 다른 게시물 에서 내 답변을 여기에 추가하면 이 솔루션이 보이지 않으므로 이제 배치 파일을 숨길 수있는 방법에 대한 17 가지 답변이 있습니다. 가까운 시일 내에 해당 게시물에 대한 답변을 삭제하겠습니다.
배치 논리와 명령을 사용하여 배치 스크립트를 만든 다음 .VBS
확장명을 가진 새 파일을 만들고 아래 논리를 사용하고 (아래 제공된 예) , 등으로 명령 .CMD
또는 .BAT
파일 의 전체 경로를 연결하십시오 PING -t <IPAddress>
. 배치를 실행할 때 명령 창을 표시하지 않는 숨겨진 방식으로 배치를 실행합니다.
아래 예제의 로직 C:\Folder\BatchFileName.cmd
이 수동으로 실행하는 명령 등을 사용하여 배치 스크립트를 가리 키도록 변경을 지정 하는 경우.
.VBS
파일을 저장하고 필요에 따라 무기한 스케줄로 실행되도록 Task Scheduler
windows7 에서 태스크 스케줄 문제점으로 파일을 스케줄하십시오 .
그렇지 않으면 .VBS
파일을 두 번 클릭하여 필요 PING
에 따라 배치 파일에 넣은 무한 명령 을 실행하십시오 .
참고 : 나는에서이 스크립트 로직을 가지고 있지만 배치 파일을 실행할 때 숨겨진 명령 창을 보장하기 위해 당신이 여기에서 필요로 같은 목적을 위해 안정적으로 작동하는 곳이라고 생각 서버 오류 소스
예 VBS 스크립트 실행 명령 줄 일괄 처리 명령 창
Set WinScriptHost = CreateObject("WScript.Shell")
WinScriptHost.Run Chr(34) & "C:\Folder\BatchFileName.cmd" & Chr(34), 0
Set WinScriptHost = Nothing
이미 대답했지만 여기에 또 다른 접근법이 있습니다. 다른 점은 배치 스크립트가 실행되는 동안 스스로 숨길 수 있다는 것입니다. 윈도우 모드 .bat 와 getCMDPid.bat (두 .net
코드 가 모두 포함되어 있음 ) 라는 추가 스크립트가 필요합니다 . 다음에 어떻게 사용할 수 있습니까?
@echo off
call getCmdPid
call windowMode -pid %errorlevel% -mode hidden
echo this should be written into log despite the cmd window is hidden>log
echo ending the log>>log
exit
탐색기 컨텍스트 메뉴에서 호출 된 배치 파일의 창을 숨겨야했고 매개 변수에 따옴표를 추가해야했습니다. 어떤 대답도 나를 위해 효과가 없으므로 내 솔루션을 추가하고 있습니다.
탐색기 상황에 맞는 메뉴의 레지스트리 "명령"에 이것을 사용했습니다.
cmd /c C:\mypath\myprogram.bat "%1"
그래서 그것을 대체하기 위해 다음과 같은 vbs를 만들어야했습니다.
WScript.CreateObject ("WScript.shell").run "cmd /c C:\mypath\myprogram.bat """ & WScript.Arguments(0) & """", 0, False
같은 곳에 저장 C:\mypath\myscript.vbs
하고 레지스트리에서 다음과 같이 호출하십시오.
wscript "C:\mypath\myscript.vbs" "%1"
.bat 경로는 공백을 사용할 수 없으므로 8.3 파일 이름으로 바꾸십시오. 예를 들어 C:\Program Files\myprogram.bat
로 참조해야 C:\Progra~1\myprogram.bat
합니다. 8.3 파일 이름을 보려면dir /x