[windows] bat 파일을 통해 Windows를 종료, 재시작 또는 로그 오프하려면 어떻게합니까?

워크 스테이션에 들어가기 위해 원격 데스크톱 연결 을 사용 하고 있습니다. 그러나이 환경에서는 시작 메뉴의 전원 옵션을 사용할 수 없습니다. 종료하거나 다시 시작하는 다른 방법이 필요합니다.

명령 줄을 통해 컴퓨터의 전원 상태를 어떻게 제어합니까?



답변

shutdown명령 을 사용하는 가장 일반적인 방법 은 다음과 같습니다.

  • shutdown -s — 종료합니다.
  • shutdown -r — 다시 시작합니다.
  • shutdown -l — 로그 오프합니다.
  • shutdown -h — 최대 절전 모드.

    참고 : 사용자가 -h“도움말”을 의미 한다고 생각하는 일반적인 함정이 있습니다 ( shutdown.exe“최대 절전”을 의미하는 경우를 제외하고 다른 모든 명령 줄 프로그램 에는 적용됨). 그런 다음 shutdown -h실수로 컴퓨터를 끄고 끕니다. 조심하십시오.

  • shutdown -i— “대화식 모드”. 조치를 수행하는 대신 GUI 대화 상자가 표시됩니다.

  • shutdown -a — 이전 종료 명령을 중단합니다.

위의 명령을 다음 추가 옵션과 결합 할 수 있습니다.

  • -f— 프로그램을 강제 종료합니다. 종료 프로세스가 중단되는 것을 방지합니다.
  • -t <seconds>— 종료까지 시간을 설정합니다. -t 0즉시 종료하는 데 사용하십시오 .
  • -c <message>— 종료 메시지를 추가합니다. 메시지가 이벤트 로그에 나타납니다.
  • -y — 모든 종료 쿼리에 대해 “예”응답을 강제합니다.

    참고 : 이 옵션은 공식 문서에 설명되어 있지 않습니다. 이 StackOverflow 사용자 가 발견했습니다 .


나는 이것과 함께 다른 좋은 대답이 언급되도록하고 싶습니다. 여기에는 특별한 순서가 없습니다.


답변

원격 시스템에있는 경우 강제 로 재부팅 하기 위해 -f 옵션을 추가 할 수도 있습니다 . 그렇지 않으면 세션이 종료되고 완고한 앱이 시스템을 중단시킬 수 있습니다.

즉시 재부팅을 원할 때마다 이것을 사용합니다.

shutdown -t 0 -r -f

보다 친근한 “시간을 내주십시오”옵션을 사용하려면 다음을 사용하십시오.

shutdown -t 30 -r

주석에서 볼 수 있듯이 -f는 시간 초과로 암시됩니다.

Brutus 2006은 이러한 옵션에 대한 GUI를 제공하는 유틸리티입니다.


답변

아무도 -m원격 종료 옵션을 언급하지 않았습니다 .

shutdown -r -f -m \\machinename

또한:

  • -r매개 변수는 재부팅을 유발합니다 (실제로 시작하기가 어려울 수 있으므로 원격 시스템에서 원하는 것임).
  • -f매개 변수 옵션은 재부팅을 강제로.
  • 물론 원격 시스템을 종료하려면 적절한 권한이 있어야합니다.

답변

원래 답변 : 2008 년 10 월

당신은 또한 모든 것을 얻었다 rundll32.exe shell32.dll 세리 :

(아래 업데이트 참조)

  • rundll32.exe user.exe,**ExitWindows** [Windows의 빠른 종료]
  • rundll32.exe user.exe,**ExitWindowsExec** [Windows 다시 시작]

    rundll32.exe shell32.dll,SHExitWindowsEx n
    

다음을 n의미합니다 :

  • 0- LOGOFF
  • 1 – SHUTDOWN
  • 2- REBOOT
  • 4- FORCE
  • 8- POWEROFF

(결합 가능-> 6 = 2 + 4 FORCE REBOOT)


2015 년 4 월 업데이트 (6 년 이상 후) :

1800 정보 는 다음과 같이 논평에서 친절하게 지적합니다 .

rundll32.exe이 목적으로 사용하지 마십시오 . 명령 행에 전달한 함수에는 매우 특정한 메소드 서명이있을 것으로 예상 ExitWindows됩니다. 의 메소드 서명과 일치하지 않습니다 .

Raymond CHEN 은 다음과 같이 썼습니다.

호출 한 함수에 필요한 함수 서명 rundll32.exe은 다음과 같습니다.

void CALLBACK ExitWindowsEx(HWND hwnd, HINSTANCE hinst,
       LPSTR pszCmdLine, int nCmdShow);

이나 같은 rundll32호출하도록 설계되지 않은 임의의 함수를 호출 하는 데 사람들이 사용 하는 것을 막지 못했습니다 .rundll32user32 LockWorkStationuser32 ExitWindowsEx

(oops)

ExitWindowsEx의 실제 함수 서명은 다음과 같습니다.

BOOL WINAPI ExitWindowsEx(UINT uFlags, DWORD dwReserved);

그리고 그것을 명확하게 만들기 위해 :

Rundll32 Windows 95에서 남은 것으로, 최신 Windows Vista의 최신 엔지니어링 지침을 위반하기 때문에 Windows Vista 이상부터 사용되지 않습니다.


답변

또 다른 작은 팁 : 배치 파일 경로를 갈 때 실수로 실행하는 경우 중단 할 수 있기를 바랍니다. 따라서 배치 파일은 종료를 호출하지만 나중에 명령 프롬프트에 남아 있습니다.

@echo off
echo Shutting down in 10 seconds. Please type "shutdown /a" to abort.
cmd.exe /K shutdown /f /t 10 /r

또한 타이머를 사용하기 때문에 오레곤 트레일에서 사냥 할 때와 같은 스릴을 얻습니다 .


답변

시작 메뉴의 시스템 종료세션 연결 끊기 또는 이와 유사한 것으로 대체 되었지만 시스템에 원격으로 연결되어 있으면 (대상은 Windows XP입니다. 대상 Windows Vista는 확실 하지 않습니다) 같은 일 Ctrl+ Alt+ End지적 오웬에 의해.


답변

당신은 아마 이것을 알고있을 것입니다. 그러나 만일의 경우 : shutdown -r“실행”상자에 입력하거나 원하는 명령을 입력하는 것이 훨씬 쉽습니다 .

배치 파일을 모든 곳에 두어 저장합니다.