“명령 창”을 시작하지 않고 배치 파일을 실행하는 방법은 무엇입니까? [복제]


129

이 질문에는 이미 답변이 있습니다.

Windows XP에서 "검은 창"없이 바로 가기를 통해 배치 (.bat 또는 .cmd) 파일을 실행할 수 있습니까?


6
박쥐 파일을 실행할 때 명령 창이 표시되지 않도록 할 수 있는지 묻고 있습니까?
Eric

6
예, cmd.exe 바로 가기의 속성을 사용하여 출력 창의 기본 색상을 쉽게 변경할 수 있습니다. (예, 이것은 농담입니다 ...)
Toby J

답변:


86

"testing.bat"를 배치 파일 이름으로 바꾼 후 hidecmd.vbs와 같이 다음을 wscript로 저장하십시오.

Set oShell = CreateObject ("Wscript.Shell") 
Dim strArgs
strArgs = "cmd /c testing.bat"
oShell.Run strArgs, 0, false

의 두 번째 매개 변수 oShell.RunintWindowStyle프로그램의 창 제로 값의 모양을 나타내는 값은 숨겨진 창입니다.

참조는 여기 http://msdn.microsoft.com/en-us/library/d5fk67ky.aspx


세 번째 줄은 strArgs = "cmd / c FILEPATH \ testing.bat"입니까?
Dan Z

1
여전히 보이지 않는 상태에서 박쥐를 승강 모드로 돌릴 수있는 방법이 있습니까?
Laurens Swart

이 방법을 .bat사용하여 관리자로 파일 을 실행하는 방법은 무엇입니까?
Mehdi Dehghani

44

이것은 Shaji의 대답을 단순화 한 것입니다. 다음 과 같이 VBScript (.vbs) 스크립트를 통해 배치 스크립트를 실행할 수 있습니다 .

'HideBat.vbs
CreateObject("Wscript.Shell").Run "your_batch_file.bat", 0, True

명령 창이 표시되지 않은 배치 파일이 실행됩니다.


이 방법을 .bat사용하여 파일을 관리자 로 실행하는 방법은 무엇입니까?
Mehdi Dehghani

@MehdiDehghani 특성> 보안> 관리자 권한으로 실행하십시오. 그것이 exe 또는 앱에서만 작동한다면, 잘 작동합니다.
테일러 스파크

20

"Windows 스크립팅 사용"답변을 확장하려면 (단일 내장되어 있기 때문에 가장 좋은 방법이라고 생각합니다) 단일 래퍼 스크립트를 사용하고 "실제"배치 파일의 이름을 매개 변수로 전달하여 수행하는 방법이 있습니다. 추가 매개 변수가 배치 파일로 전달됩니다.

If WScript.Arguments.Count >= 1 Then
    ReDim arr(WScript.Arguments.Count-1)
    For i = 0 To WScript.Arguments.Count-1
        Arg = WScript.Arguments(i)
        If InStr(Arg, " ") > 0 Then Arg = """" & Arg & """"
      arr(i) = Arg
    Next

    RunCmd = Join(arr)
    CreateObject("Wscript.Shell").Run RunCmd, 0, True
End If

예를 들어 위의 파일을 NoShell.vbs어딘가에 저장하고 다음을 호출하십시오.

NoShell.vbs c:\foo\my_batch_file.bat

마지막으로 .vbs 파일 (예 : Visual Studio의 "외부 도구")을 이해하지 못하는 곳에서이 작업을 실행하려는 C:\Windows\System32\wscript.exe경우 vbs 파일을 첫 번째 매개 변수로 사용하여 배치 파일을 두 번째로.


6
상위 2 개의 답변 중 하나를 사용해야하므로 새로 생성 한 모든 bat 파일에 대해 새로운 vbs 파일을 생성해야한다는 아이디어와 개념을 싫어하는 사람들에게는 완벽한 솔루션입니다. 여러 vbs 파일 대신 여러 개의 바로 가기가 있습니다. 모든 새 박쥐 파일에 대해 vbs 파일의 바로 가기를 생성하고 마우스 오른쪽 단추로 클릭 한 후 속성> 바로 가기 탭을 선택하고 대상 상자에 위와 같이 이미 존재하는 경로 뒤에 박쥐 파일의 경로를 입력하십시오. VBS가 파일로이 경우 바로 가기가 같은 장소에 있지 않습니다 : "C:\My Files\HideCmd.vbs" c:\foo\my_batch_file.bat.
Rolo

bat 파일의 파일 경로에 공백이 있으면 vbs 파일의 바로 가기를 통해 어떻게 호출 할 수 있습니까? 예를 들면 다음과 같습니다 "C:\My Files\HideCmd.vbs" c:\my things\my_batch_file.bat.. 경로 주위에 큰 따옴표, 공백 대신 % 20 또는 두 가지 조합을 시도해도 아무 효과가 없습니다. 파일을 찾을 수 없거나 아무 일도 일어나지 않는다는 오류 메시지가 나타납니다. 내 사용자 오류, 바로 가기의 대상 필드에 대한 Windows 제한 또는 공백이있는 파일 경로를 올바르게 처리하지 못하는 vbs 스크립트의 문제로 인한 것입니까?
Rolo

@Rolo 스크립트를 업데이트하여 들어오는 매개 변수 중 하나에 공백이 있으면 따옴표로 묶습니다. 따라서 배치 파일을 호출 할 때 따옴표로 배치 파일의 경로를 감싸려면 단일 인수로 간주되어 호출되기 전에 다시 줄 바꿈됩니다.
Toby J

9

바로 가기 속성을 최소화하여 실행할 수 있습니다.

완전히 보이지 않게 실행하려면 Windows 스크립팅과 같은 다른 것이 필요합니다.


1
당신의 첫 번째 제안은 제가 항상했던 방식입니다.
martineau

8

'/ B'옵션으로 시작 하십시오 . 예를 들면 다음과 같습니다.

@echo off
start /B go.bat

25
start /b새 콘솔을 생성하는 대신 현재 할당 된 콘솔에서 프로그램을 실행하면됩니다. 배치가 cmd로 실행되어야하기 때문에 어쨌든 새로운 것을 얻게 될 것이다 (이것은 [surprise], 콘솔을 연다).
Joey

@Joey 예. 그러나 이것은 SYSTEMC / C ++에서 와 같이 쉘 실행을 통해 다른 응용 프로그램에서 배치 파일을 시작하는 데 매우 유용합니다 .
Tomáš Zato

1
@ TomášZato :이 경우 배치 파일을 직접 호출하거나 프로세스를 생성하는 데 사용하는 것이 쉘을 먼저 생성하지 않는 경우을 사용하십시오 cmd /c foo.cmd. start이러한 시나리오에서 사용할 필요는 없으며 절대로 사용 system해서는 안된다고 주장합니다 CreateProcess. 배치 파일을 시작하면 이미 하나의 플랫폼에 의존하고 있으므로 작업에 더 적합한 도구를 사용할 수도 있습니다.
Joey

@Joey 감사합니다 cmd /c. cmd 명령은 필자의 경우에 필요했지만 다른 배치 파일을 실행하는 배치 파일에 대해 지금까지 찾은 모든 stackexchange 답변은 start를 사용하는 데 가장 많이 사용됩니다 ...
T_D

start /b go.bat 새 콘솔 (예 : conhost.exe 인스턴스 또는 Windows 7 이전의 csrss.exe의 스레드)을 할당 하지 않습니다 . 그러나 배치 스크립트가 동일한 콘솔에 연결된 cmd.exe의 새 인스턴스로 실행되기 때문에 혼란 스러울 것입니다 . 셸의 두 인스턴스 모두 콘솔에서 입력을 읽도록 경쟁하며 일반적으로 번갈아 나타납니다. 그것은 필요 /w(예를 start /b /w go.bat사용하는 것과 유사 번째 인스턴스에서 대기하기 위하여) cmd /c사용하는 경우 system. 또한을 호출하는 경우 직접 CreateProcess실행하십시오 go.bat. 필요가 없습니다 cmd /c.
Eryk Sun

6

무료 GPL 오픈 소스 "숨겨진 프로세스 생성"

http://www.commandline.co.uk/chp/

Microsoft Security Essentials 및 대부분의 다른 바이러스 / 악성 프로그램 스캐너는 실행 파일 인 chp.exe를 바이러스처럼 바이러스 나 창처럼 표시하거나 작업 표시 줄 단추를 표시하여 지정한 프로그램을 숨기므로 실행 파일을 바이러스로 취급합니다.

바이러스가 아닙니다. 예를 들어 대상 프로세스가 작업 관리자에 나타나지 않도록 숨기지 않습니다. 그리고 물론 소스 코드가 포함되어있어 매우 작고 아무것도하지 않는 것을 볼 수 있습니다.

포함 된 chp.exe가 실제로 해당 소스에서 빌드되었다고 믿을 필요조차 없습니다. 계속해서 포함 된 chp.exe를 버리고 소스에서 직접 컴파일 할 수 있으며 그렇게하는 데 필요한 모든 도구는 무료로 다운로드 할 수 있습니다.


.bat 또는 .cmd 파일 바로 가기를 만든 다음 바로 가기, 속성, 바로 가기 탭, 실행 : 최소화를 마우스 오른쪽 단추로 클릭하십시오. 그런 다음 예약 된 작업에서 .bat / .cmd 파일 대신 바로 가기를 사용하십시오. 그러면 창이 팝업되지 않지만 작업 표시 줄 버튼은 계속 나타납니다.


6

AutoIt 과 같은 윈도우 스크립팅을 사용할 수 있습니다 .

예를 들어 이것을 AutoIt 스크립트 편집기에 작성하십시오. 상당히 간단합니다

Run("C:\test\batchfile.bat", "", @SW_HIDE)

루프에서 실행하려면

$x=0
Do
 Run("C:\test\batchfile.bat", "", @SW_HIDE)
 Sleep(5000)
Until $x = 1

.exe로 컴파일하면 완료됩니다.


마찬가지로 오토 핫키에서도 :

#NoTrayIcon ; To prevent momentary icon pop-up
run whatever.bat arg1 arg2,,hide 

5

숨겨진 시작 사용 ($ 20 비용)

숨겨진 시작-콘솔 창 또는 UAC 프롬프트없이 응용 프로그램 및 배치 파일 실행

콘솔 응용 프로그램 및 배치 파일은 Windows 시작 또는 일정에 따라 정기적으로 실행됩니다. 가장 큰 불편은 각 응용 프로그램이 화면에서 깜박이는 콘솔 창을 여는 것입니다. 숨겨진 시작 (또는 Hstart)은 간단한 명령 줄 유틸리티로 백그라운드에서 창없이 콘솔 응용 프로그램 및 배치 파일을 실행하고 Windows 7 및 Vista에서 UAC 권한 상승을 처리하고 여러 명령을 병렬 또는 동기식으로 시작하는 등 다양한 기능을 수행 할 수 있습니다. .

여기에 이미지 설명을 입력하십시오


이것은 매우 훌륭하게 디자인되고 유용한 응용 프로그램입니다.
Guru Josh

5

추가 프로그램을 사용하지 않고 간단한 솔루션.

  1. 실행할 배치 파일을 작성하고 테스트하십시오.
  2. 바로 가기를 만듭니다.
  3. 바로 가기 속성을 편집하십시오. 바로 가기 탭에서 최소화 실행을 선택하십시오. 단축키를 할당하면 완료됩니다!

행운을 빕니다!


6
이것은 OP 문제에 대한 해결책이 아닙니다. 차이있다 최소화 하고 숨기기
nixda

올바른 아이콘을 사용하도록 바로 가기를 변경하면 작업 표시 줄의 최소화 된 시작은 실제로 무언가가 시작되고 있다는 것을 상기시켜줍니다.
누구든지

그것은 문제에 대한 훌륭하고 깨끗한 해결책입니다 ! 고맙습니다!
dmitry_romanov 2016 년

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