it-swarm-ko.tech

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

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

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

cmd /c start /min mybat.bat

그러나 그것은 매시간마다 새로운 명령 창을 제공합니다. cmd /c "문자열로 지정된 명령을 수행 한 다음 종료됩니다.".

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

144
Tom Dunham

대신 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 method 의 완전한 구문 :

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

인수 :

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

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

(로보 스코프를 사용하는 경우 실제 사용자를 사용해야 할 수도 있습니다 ...)

JR

59
John Rennie

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

29
Peter Meinl

CHP (숨겨진 프로세스 만들기) 시도해 볼 수도 있습니다.

CHP.EXE mybat.bat

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

18
rocketmonkeys

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

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

cmdow @ /hid

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

cmdow /run /hid mybat.bat 
9
itsadok

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

start /b <command>
5
rashfeather

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

중요 : '.lnk'확장자로 완성 된 실행 텍스트 필드에 바로 가기 경로를 입력하여 수동으로 경로를 지정해야합니다. 탐색하려고하면 유용하게 바로 가기가 가리키는 곳으로 리디렉션됩니다.

5
Doug Kavendek

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

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

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

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

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

NirCmd 명령 참조exec 섹션에서 :

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

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

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

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

1
rubynorails

내가 사용한 또 다른 솔루션은 Hidden Start

0
SteveC