창없이 예약 된 작업에서 .bat 파일 실행


143

robocopy매시간마다 실행되는 배치 스크립트를 시작하는 예약 된 작업이 있습니다. 그것이 실행될 때마다 robocopy의 출력으로 데스크탑에 창이 나타납니다.

예약 된 작업을 실행하여 창을 최소화 된 것처럼 보이게했습니다.

cmd /c start /min mybat.bat

그러나 그것은 매시간마다 새로운 명령 창을 제공합니다. cmd /c"문자열로 지정된 명령을 수행하고 종료합니다"라는 말에 놀랐습니다. 나는 문서를 오해했을 것입니다.

cmd 창을 팝업하지 않고 배치 스크립트를 실행하는 방법이 있습니까?


이 답변이 더 바람직한 것으로 나타났습니다 stackoverflow.com/questions/6568736/…
Efekt

답변:


144

대신 Windows 스크립트 파일을 사용하여 자동으로 실행할 수 있습니다. 실행 방법을 사용하면 보이지 않는 모드에서 스크립트를 실행할 수 있습니다. .vbs이와 같은 파일을 만듭니다

Dim WinScriptHost
Set WinScriptHost = CreateObject("WScript.Shell")
WinScriptHost.Run Chr(34) & "C:\Scheduled Jobs\mybat.bat" & Chr(34), 0
Set WinScriptHost = Nothing

예약하십시오. 이 예제의 두 번째 인수는 창 스타일을 설정합니다. 0은 "창 숨기기"를 의미합니다.

Run 메소드 의 완전한 구문 :

 object.Run(strCommand, [intWindowStyle], [bWaitOnReturn])

인수 :

  • object : WshShell 오브젝트.
  • strCommand : 실행할 명령 행을 나타내는 문자열 값. 실행 파일에 전달할 매개 변수를 포함해야합니다.
  • intWindowStyle : 선택 사항. 프로그램 창의 모양을 나타내는 정수 값. 모든 프로그램이이 정보를 사용하는 것은 아닙니다.
  • bWaitOnReturn : 옵션. 스크립트에서 다음 명령문을 계속하기 전에 스크립트가 프로그램의 실행이 완료되기를 기다려야하는지 여부를 나타내는 부울 값입니다. true로 설정하면 프로그램이 완료 될 때까지 스크립트 실행이 중지되고 Run은 프로그램이 반환 한 오류 코드를 반환합니다. false (기본값)로 설정하면 프로그램을 시작한 직후 Run 메소드가 자동으로 0을 리턴합니다 (오류 코드로 해석되지 않음).

+1, 방금 똑같은 내용을 썼습니다
Sam Cogan

삭제하기 전에 봤습니다. 우리 둘 다 봇인 것 같아 ;-)
splattne

1
username, 나는 Sam이 나보다 훨씬 더 가치가 있다고 생각합니다. 어쨌든 감사합니다! 그리고 같은 문장으로 나와 나와 Skeet을 언급하지 마십시오. 신성 모독입니다! ;-)
splattne

3
"cmd 창을 띄우지 않고 배치 스크립트를 실행하는 방법이 있습니까?"라는 질문에 대한 직접적인 대답을 제공합니다.
Mark Meuer

2
@ Lee 경로에 공백이 있으면 큰 따옴표가 필요하다고 생각합니다.
splattne

58

이 작업을 예약 된 작업으로 실행하고 있습니까? 다른 사용자 계정으로 실행되도록 설정하면 로그온 한 사용자에게 보이지 않습니다. 스크립트에서 파일 공유 나 프린터와 같은 Windows 인증이 필요한 항목에 네트워크 액세스가 필요하지 않은 경우 "nt authority \ system"으로 실행하고 암호를 비워 둘 수 있습니다. Windows 7에서는 사용자를 SYSTEM으로 설정하고 OK를 누릅니다.

(robocopy를 사용하는 경우 실제 사용자를 사용해야 할 수도 있습니다 ...)

JR


3
고마워-이것은 .vbs 옵션보다 번거롭지 않았습니다.
mackenir

8
"다음 계정으로 실행"사용자를 SYSTEM (나중에 NT AUTHORITY \ SYSTEM으로 변경)으로 설정하고 나에게 도움이되었습니다. 예약 된 작업을 실행할 때 팝업 CMD 창이 더 이상 표시되지 않습니다. 감사!
Ryan Stille

1
+1, 이것은 우아합니다. 사용자 이름으로 "system"을 입력하면 win7이 나머지를 대신합니다. 네트워크 공유 및 Windows 인증이 필요한 항목이 아닌 인터넷에 대한 네트워크 액세스 권한을 얻습니다.
samsmith

1
시스템 사용자는 간단하고 우아하며 훌륭한 팁입니다! +1!
Matteo Conta

1
최소 권한 관리 모델 구현을 참조하십시오 . 이를 위해 시스템 계정을 사용하는 것이 최소 권한 정책을 위반합니까? 그렇다면 다음 관리자는 알고 있어야 하지 대부분의 상황에서이 작업을 수행.
user34660

29

예약 된 작업을 "사용자 로그온 여부에 관계없이 실행"으로 구성하면됩니다.


6
완전한! 자격 증명 저장소를 비활성화해도 SYSTEM을 실행하는 것보다 안전합니다.
binki

17

CHP (숨겨진 프로세스 만들기)를 시도 하고 정확히 생각한 것을 수행 할 수 있습니다 ...

CHP.EXE mybat.bat

명령 창없이 실행됩니다. 완전한! CMDOW와 같은 사람들이 만들었지 만 더 적합합니다.


로그인 한 사용자의 컨텍스트에서 작업을 실행해야 할 때 완벽하게 작동합니다 ( "트리거 : 사용자 세션에 연결시", "다음과 같이 작업 실행 : 사용자")
Sergei

1
이것은 기본 제공 도구가 아닙니다
JonnyRaa

9

CMDOW 는 명령 줄에서 창에 많은 것들을 할 수있게 해주는 멋진 도구입니다.

가장 간단한 작업 중 하나는 현재 창 (일반적으로 bat 파일의 첫 줄)을 숨기는 것입니다.

cmdow @ /hid

또는 새로운 숨겨진 프로세스를 시작하십시오

cmdow /run /hid mybat.bat 

4
이것과 Rocketmonkeys의 제안에는 새로운 도구를 다운로드하는 것이 포함되어 있으며, 이는 다양한 사람들의 데스크탑에서 더 많은 호환성을 의미합니다. Windows 명령을 사용하여 구운 것이 훨씬 좋습니다.
IanVaughan

플러스 cmdow 일부 안티 바이러스 프로그램 (그것이하여 "위험"으로 감지 하지 위험하지만, cmdow 파일이 격리되는 경우 검출 자체가 ... 몇 가지 문제가 발생할 수 있습니다.)
Otiel

3
여전히 팝업 콘솔이 있으며 매우 빠르게 깜박입니다.
Bamboo

5

로 스크립트를 호출하십시오

start /b <command>

1
예약 된 작업-> 상태에 "시작할 수 없음"이라는 메시지가 표시되지 않습니다. start / b C : \ file.bat : 및 : start / b "C : \ file.bat": : file.bat : 잘 작동합니다.
IanVaughan

1
start프로그램이 아니기 때문에 명령입니다. cmd실행할 프로그램과 /c start /b <file>인수 로 지정해야합니다 . 그러나 여전히 콘솔 창을 만들고 cmd화면에 검은 창을 깜박 이기 때문에 여전히 작동하지 않습니다 .
Synetech

1
@Synetech으로 새 창을 만들지는 않지만 콘솔 창을 열어야 만 시작할 수 있음을 확인할 수도 있습니다. 이것은 실제로 편리한 명령이지만 예약 된 작업에서 요청한대로 사용할 수 없습니다.
JonathanDavidArndt

5

배치 파일에 대한 바로 가기를 만들고 바로 가기 속성을 '바로 가기'탭에서 최소화로 시작하도록 설정 한 다음 바로 가기를 시작하도록 작업을 설정할 수 있습니다.

중요 : '.lnk'확장자를 사용하여 실행 텍스트 필드에 바로 가기 경로를 입력하여 바로 가기 경로를 수동으로 지정해야합니다. 당신은 단지로 이동하려고하면, 그것은 것입니다 유용하게 에 어떤 바로 가기 지점에 자신을 리디렉션합니다.


Windows 10 x64에서는 작동하지 않습니다. "이 파일을 어떻게 열겠습니까?"라는 팝업이 나타납니다.
Jan

1

이 질문은 이미 Windows 고유의 완벽하게 좋은 해상도로 답변되었으므로 가장 호환 가능해야하며 완전히 동의합니다.

또한 @splattne의 의견 (그러나 그의 실제 답변은 아님)에 동의하지 않는다고 말하고 싶었습니다. 다른 참조 스레드의 해상도가 크레딧을받을 가치가 있다는 것입니다. 이 답변에는 스크립트를 다른 사용자 (SYSTEM)로 실행하는 것이 포함됩니다. 이는 스크립트에 루트 액세스 권한을 부여하는 것과 거의 같습니다. 또한 ROBOCOPY네트워크 액세스가 필요한 작업 (예 : John Rennie가 참조)에 대해서는 실패 합니다.

CMDOW이전에는 시도한 적이 없지만 [Windows에는 기본적으로 설치되어 있지는 않지만] 여전히 대부분의 버전으로 이식성이 뛰어나며 32 비트 및 64 비트 버전으로 제공되는 또 다른 유사한 해상도를 제공하고 싶습니다. NirCmd .

NirCmd는 수많은 옵션을 가진 매우 강력한 도구입니다. 가장 유용한 도구는 다음과 같이 간단하게 실행하여 숨겨진 명령 창을 실행할 수 있다는 것입니다.

c:\path\to\nircmd.exe exec hide "c:\path\to\mybat.bat"

로부터 exec의 섹션 NirCmd 명령 참조 :

exec [show/hide/min/max] [application + command-line]

응용 프로그램을 실행하고 선택적으로 실행 된 응용 프로그램에 대해 하나 이상의 명령 줄 매개 변수를 지정합니다. [show / hide / min / max] 매개 변수 는 실행중인 응용 프로그램의 표시 여부를 지정합니다. 'hide'가 지정되면 실행중인 응용 프로그램이 사용자에게 보이지 않습니다. 'max'를 지정하면 실행중인 응용 프로그램 창이 최대화됩니다. 'min'을 지정하면 실행중인 응용 프로그램 창이 최소화됩니다.

편집 :ROBOCOPY 작업 을 실행 하려고 시도 하고이 답변에서 방법을 시도했지만 네트워크 액세스 권한을 편집 한 후에도 작동하지 않았습니다. 스크립트를 두 번 클릭하여 작동시키지 못했지만 관리자 권한 명령 프롬프트에서만 실행할 수있었습니다. 배치 파일에 대한 바로 가기를 만들고 관리자로 실행하고 두 번 클릭하여 실행할 수 있었지만 결국은 SYSTEM으로 숨겨 실행하는 방법이었습니다 (알고 있습니다) -그러나 ROBOCOPY배치 파일에 올바른 권한이 있으면 가치가있는 작업을 수행합니다.

편집 2 : 어떤 이유로 SYSTEM으로 작동하지 않을 것입니다 (아마도 앞에서 언급 한 네트워크 액세스 것) ./ ROBOCOPYL 플래그없이 실제로 실행 한 후에 만 ​​이것을 알았습니다. 기본적으로 시뮬레이션 일뿐입니다. 실제로 원격 시스템에 연결하지만 가장 높은 권한으로 배치 파일을 실행하고 숨겨진 상자를 선택하면 명령 창을 표시하지 않고 백그라운드에서 로그인 한 사용자로 실행할 수 있습니다. .




-2

창은 아니지만 출력을 숨기려면 배치 파일의 시작 부분에 다음을 추가하십시오.

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