2017-10-14 7 views
0

를 사용하여 특정 시간에 종료 PC를하고 난 스크립트가 당신이 /create을 사용할 수있는 배치를 위해 작업 스케줄러어떻게 VBS 또는 배치 스크립트

If time >= 22:00 hrs // shutdown if startup after 10pm 
     Shutdown /s /f 
    break 

    While (time != 22:00hrs) //looping until 22:00hrs 
    Any statement 
    Else 
     Shutdown /s /f 
    Exit 
+0

이 작업에는 VBScript가 필요하지 않습니다. 난 배치 스크립트 ** 또는 ** 작업 일정 잘 작동 믿습니다. – SteveFest

+0

배치 파일 또는 vbs 할 것이다하지만 내 문제는 .bat 및 .vbs 코딩을 알 수 없습니다. –

+0

작업 스케줄러는 어떻습니까? 코딩은 필요하지 않습니다. – SteveFest

답변

2

을 폴더
시작하고 사용하지 입고 싶은 schtasks 명령의 하위 명령은 작업을 예약합니다. schtasks은 예약 된 작업을 관리하고 만들 수있는 명령입니다. /create 하위 명령은 예약 된 작업을 만듭니다.

요청에 대한 해결책을 제공하기 전에 명령에 대해 schtasks /create /? 또는 link을 추가하여 Windows 도움말 메시지를 읽는 것이 좋습니다. 둘 다 예약 된 작업을 만들 때 사용할 수있는 다양한 옵션에 대한 설명을 제공하고 몇 가지 예를 제공합니다. 예약 된 작업을 쉽게 만들 수 있지만 문제가 발생할 때 (예 : 실제로 원하는 방식으로 구성되지 않은 경우) 문제를 찾고 해결하는 것이 어려울 수 있습니다. 귀하의 경우를 들어

이 같은 것 할 수있는 가장 쉬운 방법 : 작업을 생성합니다

SCHTASKS /create /tn "Curfew" /tr "C:\Windows\System32\shutdown.exe /s /f" /sc daily /st 22:00 

이를 그 것이다 종료 시스템 오후 10시에 매일.

편집 : 명령의 설명 :

  • /tn 옵션은 /tr 옵션
  • 을 실행하는 작업이이 명령을 지정하는 데 사용되는 예약 된 작업
  • 에 이름을 제공합니다 /sc 옵션은 작업 빈도를 지정합니다.
  • /st 옵션은 작업이 어느 일정에 있어야하는지 지정합니다 이러한 옵션 및 명령 자체에 대한 자세한 설명은

다시, 에드, 일정 유형의 몇 가지 유용한 예를 찾을 수있는 link

를 도움말 메시지 (schtasks /create /?)을 읽고 따르십시오 here

편집 2 : 그것은 10.PM 및 06.AM 사이에 시작 된 경우 셧다운 시스템에 대한 작업은

당신은 박쥐가 필요합니다 (comment OP 참조)

@echo off 
REM Get current timestamp from system 
FOR /F "tokens=2 delims==." %%G in ('wmic os get LocalDateTime /VALUE') DO set timestamp=%%G 
REM Extract hours from timestamp 
set hour=%timestamp:~8,2% 
REM Verify if hour >= 22 or hour < 6 
set shutdown= 
IF %hour% GEQ 22 set shutdown=true 
IF %hour% LSS 6 set shutdown=true 
REM Shutdown system if so 
IF "%shutdown%" == "true" shutdown /s /f 

그것은 ISO 형식으로 될 수있는 장점을 가지고 있기 때문에 대신 %time%의 현재 타임 스탬프를 얻을 수 wmic os LocalDateTime를 사용하고 의존하지 않습니다 그것은 10.00 시부 터 오전 6시 사이 일 때 시스템을 종료 채널 스크립트 % time %와 같은 로케일 설정에서 (this answer 참조). 예를 들어, 배치 스크립트로 저장하십시오. 원하는 경우 C:\Windows\Curfew_police.bat 또는 "덜 분명한"이름으로 지정해야하지만 시스템의 모든 사용자가 스크립트에 액세스 할 수 있어야합니다.그럼 당신은 /sc onstart과 스크립트를 시스템이 시작될 때마다 실행하는 작업을 예약 할 수 있습니다. (예 : 대한 C:\Windows\Curfew_police.bat)

schtasks /create /tn "Curfew police" /tr "\"c:\path\to script\batch.bat\"" /sc onstart 

위의 배치 스크립트에 대한 실제 경로로 c:\path\to script\batch.bat 교체를

+1

'shutdown/s/f'는 사용자에게 완료되지 않은 작업을 저장할 기회조차주지 않을 것이라는 사실을 알고 있어야합니다. 어쩌면 당신은'/ t' 옵션으로 타임 아웃을 추가 할 수 있을까? –

+0

당신의 매우 도움이 답변과 또한 링크를 주셔서 감사합니다, 내가 근래에 "if"진술 및 "while 루프"에 대한 몇 가지 코드를 개발하겠습니다. –

+0

전체 while 루프는 위의 예약 된 작업으로 대체 될 수 있습니다. 하지만 if 문을 올바르게 이해했다면 오후 10시 이후에 시작된 경우 시스템 종료를 원하십니까? –

0

대신을 스케줄러를 사용하여 파일을 배치 파일의 시작 폴더로 이동하고 카운트 다운 할 수도 있습니다. 하지만 관리자가되어야합니다. 따라서 어쩌면 그의 작업 스케줄러는 자신이 대신 시작 폴더를 사용해야하므로 고장 그가 스케줄러없이 말했다 방법

@echo off 
::sets the hour to a varible called hour 
set hour=%TIME:~0,2% 

::copy the file only if it doesn't exist. 
::This is important because we don't want to copy the file every time the computer starts up. 
if NOT EXIST "C:\ProgramData\Microsoft\Windows\Start Menu\Programs\Startup\%0" (
copy "%cd%\%0" "C:\ProgramData\Microsoft\Windows\Start Menu\Programs\Startup\%0" 
) 
::if you want this to only pertain to you, replace: 
::"C:\ProgramData\Microsoft\Windows\Start Menu\Programs\Startup\%0" 
:: with "C:\Users\%username%\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup\%0" both times. 


:loop 
if "%hour%" NEQ "22" (
::wait one minute, sence windows %time% command doesn't have seconds 
sleep 60 
set hour=%TIME:~0,2% 
) else (
shutdown /s /f 
) 
goto :loop 

참고.

+0

그게 ... 작업 스케줄러를 만드는 것은 항상 내 컴퓨터에서 실패합니다 ... 왜 제 3 자 스케줄러를 사용해야합니까? 그것들은 이미 그들에게 명백했다. 이 배치 파일은 읽는 것이 어렵고 내가 생각하는 최선의 방법은 ... @ Z.mikaels. .. 고마워. –

+0

'% time %'변수는 로케일에 의존하고 일부 컴퓨터에서는 작동하지 않을 수도 있습니다. sleep 명령은 또한 감소되고 대체는 시간 초과됩니다. – SteveFest