How do I shutdown, restart, or log off Windows via a bat file?
Asked Answered
T

10

685

I've been using Remote Desktop Connection to get into a workstation. But in this environment, I cannot use the power options in Start Menu. I need an alternative way to shutdown or restart.

How do I control my computer's power state through the command line?

Tribromoethanol answered 2/10, 2008 at 13:37 Comment(0)
T
1194

The most common ways to use the shutdown command are:

  • shutdown -s — Shuts down.
  • shutdown -r — Restarts.
  • shutdown -l — Logs off.
  • shutdown -h — Hibernates.

    Note: There is a common pitfall wherein users think -h means "help" (which it does for every other command-line program... except shutdown.exe, where it means "hibernate"). They then run shutdown -h and accidentally turn off their computers. Watch out for that.

  • shutdown -i — "Interactive mode". Instead of performing an action, it displays a GUI dialog.

  • shutdown -a — Aborts a previous shutdown command.

The commands above can be combined with these additional options:

  • -f — Forces programs to exit. Prevents the shutdown process from getting stuck.
  • -t <seconds> — Sets the time until shutdown. Use -t 0 to shutdown immediately.
  • -c <message> — Adds a shutdown message. The message will end up in the Event Log.
  • -y — Forces a "yes" answer to all shutdown queries.

    Note: This option is not documented in any official documentation. It was discovered by these StackOverflow users.


I want to make sure some other really good answers are also mentioned along with this one. Here they are in no particular order.

Tribromoethanol answered 2/10, 2008 at 13:37 Comment(6)
Do read about using -f (for force) in the next answer. Says the guy who didn't and now has a computer stuck on shutdown on the other side of the planet during the weekend (:Hesper
+1 just that I used /<switch> instead of -<switch>. The help section also uses /.Unbuckle
My experience: Using the -s option (shutdown) in Remote Desktop (as the OP mentions) only terminates the remote desktop but leaves the remote machine untouched.Patmos
I use "-r" for Remote Machines. So it will restart and not need manual intervention.Basseterre
If you are on a remote machine, you may also want to add the -f option to force the reboot. Otherwise your session may close and a stubborn app can hang the system. To force an immediate reboot: shutdown -t 0 -r -f. For a more friendly "give them some time" option, you can use this: shutdown -t 30 -r. The -f is implied by the timeout. (from proposed edit by Mateusz Konieczny)Uranometry
I would like to point out flaws in this answer first of all ` shutdown -i ` is not for filling in functions or any of that jazz. I am sure that it is used to remotely shutdown other computers in the currently connected LAN and shutdown -t xxis not a stand alone command so you have to use with shutdown -s or shutdown -rDubose
W
381

If you are on a remote machine, you may also want to add the -f option to force the reboot. Otherwise your session may close and a stubborn app can hang the system.

I use this whenever I want to force an immediate reboot:

shutdown -t 0 -r -f

For a more friendly "give them some time" option, you can use this:

shutdown -t 30 -r

As you can see in the comments, the -f is implied by the timeout.

Brutus 2006 is a utility that provides a GUI for these options.

Wizardry answered 2/10, 2008 at 13:45 Comment(3)
Reading the help for shutdown on Windows 8.1 I see: "If the timeout period is greater than 0, the /f parameter is implied." And as the default timeout is 30 seconds I think it's preferable to give some time for the clean shutdown and then the forced shutdown happens after the timeout.Gutty
That's a good point. I believe when I wrote this, the OS I was using was Windows XP. I see that the "/f is implied" remark is in Windows 7 as well. I've modified the example accordingly.Wizardry
By default they have 30 seconds. I use for immediate: shutdown /r /t 0 and for friendly: shutdown /rLongspur
B
85

No one has mentioned -m option for remote shutdown:

shutdown -r -f -m \\machinename

Also:

  • The -r parameter causes a reboot (which is usually what you want on a remote machine, since physically starting it might be difficult).
  • The -f parameter option forces the reboot.
  • You must have appropriate privileges to shut down the remote machine, of course.
Bybee answered 6/1, 2009 at 14:51 Comment(3)
can the machine name be an IP address? Ie, can you do this over the internet?Huelva
If you can access the machine via \\IP.AD.DR.ESS (i.e. the necessary ports are open and you have the required permissions), then yes, this should work over the internet.Kinematograph
I first tried with -r only and it didn't work because i wanted a remote shutdown. It worked with shutdown -r -m. -f was not needed.Violaviolable
M
40

Original answer: Oct. 2008

You also got all the "rundll32.exe shell32.dll" serie:

(see update below)

  • rundll32.exe user.exe,**ExitWindows** [Fast Shutdown of Windows]
  • rundll32.exe user.exe,**ExitWindowsExec** [Restart Windows]

    rundll32.exe shell32.dll,SHExitWindowsEx n
    

where n stands for:

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

(can be combined -> 6 = 2+4 FORCE REBOOT)


Update April 2015 (6+ years later):

1800 INFORMATION kindly points out in the comments:

Don't use rundll32.exe for this purpose. It expects that the function you passed on the command line has a very specific method signature - it doesn't match the method signature of ExitWindows.

Raymond CHEN wrote:

The function signature required for functions called by rundll32.exe is:

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

That hasn't stopped people from using rundll32 to call random functions that weren't designed to be called by rundll32, like user32 LockWorkStation or user32 ExitWindowsEx.

(oops)

The actual function signature for ExitWindowsEx is:

BOOL WINAPI ExitWindowsEx(UINT uFlags, DWORD dwReserved);

And to make it crystal-clear:

Rundll32 is a leftover from Windows 95, and it has been deprecated since at least Windows Vista because it violates a lot of modern engineering guidelines.

Molybdic answered 2/10, 2008 at 13:56 Comment(6)
whats the difference between shutdown and poweroff?Monahon
@Monahon today? none. For NT4 and before, the motherboard didn't always support power off, only shutdown (windows was completely closed, but the PC was still under electric power). Only poweroff (if the hardware supported it at the time) closed windows and cut the electic power. Today, both shutdown and poweroff do that.Molybdic
Don't use rundll32.exe for this purpose. It expects that the function you passed on the command line has a very specific method signature - it doesn't match the method signature of ExitWindows.Grajeda
Reference: blogs.msdn.com/b/oldnewthing/archive/2004/01/15/58973.aspx, blogs.msdn.com/b/oldnewthing/archive/2014/04/08/10515006.aspx, blogs.msdn.com/b/oldnewthing/archive/2013/01/04/10382242.aspx, blogs.msdn.com/b/oldnewthing/archive/2011/09/09/10208136.aspx,Grajeda
@1800INFORMATION very good point. I have rewritten the answer to make it clear this is not a valid option.Molybdic
To be fair, though, it really doesn't matter what type of memory leak or stack corruption you are causing if you are immediately shutting down the PC.Zimmermann
A
12

Another small tip: when going the batch file route, I like to be able to abort it in case I run it accidentally. So the batch file invokes the shutdown but leaves you at the command prompt afterwards.

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

Plus, since it's on a timer, you get about the same thrill as you do when hunting in The Oregon Trail.

Arella answered 10/6, 2011 at 3:12 Comment(2)
you can put pause in the bath file, and then abort command, such the abort sequence would be any keyNicaragua
@rsk82, well being able to get away with typing anything was an unfortunate limitation of my TRS-80 copy of Oregon Trail too, but frankly I always considered it cheating and my brother would get enraged whenever I did it. Just saying: why would you want to enrage my brother?Arella
C
8

You're probably aware of this, but just in case: it's much easier to just type shutdown -r (or whatever command you like) into the "Run" box and hit enter.

Saves leaving batch files lying around everywhere.

Characteristic answered 2/10, 2008 at 14:1 Comment(3)
yep...I just like to have the double-click sitting there...that's what the -r bat file is for too ;o)Tribromoethanol
careful not to put it in programs->startup :)Characteristic
aw.. and curious behavior will be obtained if the code is placed in a shutdown.bat file. Try it! :)....Multifarious
H
7

When remoted into a machine (target is Windows XP anyway; I am not sure about target Windows Vista), although Shutdown on the start menu is replaced by Disconnect Session or something like that, there should be one called 'Windows Security' which also does the same thing as Ctrl + Alt + End as pointed to by Owen.

Headwaiter answered 2/10, 2008 at 13:57 Comment(2)
I used to use that method but it doesn't work anymore, command line it is.Lewan
I also have a gadget which has buttons for shutdown, restart, hibernate, lock that works in RDP.Lewan
W
7

I'm late to the party, but did not see this answer yet. When you don't want to use a batch file or type the command. You can just set focus to the desktop and then use Alt + F4.

Windows will ask you what you want to do, select shutdown or restart.

For screenshots and even a video, see: https://tinkertry.com/how-to-shutdown-or-restart-windows-over-rdp

Wind answered 15/8, 2018 at 14:59 Comment(2)
@Keng, reading the actual problem "I'm not able to use the shutdown/restart function in the Start menu" it appears to me that you want to know how to do that. The command-line is one solution, the keyboard is another. It might help other users who stumble onto this question and just want an easy solution to shutdown or restart.Wind
To only use the keyboard (if e.g. mouse is not available for any reason, or for convenience), another tips is to use Win + D to set focus on the desktop. For selecting an option in the drop down menu, use tab to switch focus within the dialog, space to drop down menu, arrows to select and space/Enter to perform selected action. Tried to edit this in, but edit queue was full.Eckard
V
6

I would write this in Notepad or WordPad for a basic logoff command:

@echo off
shutdown -l

This is basically the same as clicking start and logoff manually, but it is just slightly faster if you have the batch file ready.

Vicenta answered 11/3, 2010 at 16:47 Comment(0)
I
2

Some additions to the shutdown and rundll32.exe shell32.dll,SHExitWindowsEx n commands.

LOGOFF - allows you to logoff user by sessionid or session name

PSShutdown - requires a download from windows sysinternals.

bootim.exe - windows 10/8 shutdown iu

change/chglogon - prevents new users to login or take another session

NET SESSION /DELETE - ends a session for user

wusa /forcerestart /quiet - windows update manager but also can restart the machine

tsdiscon - disconnects you

rdpinit - logs you out , though I cant find any documentation at the moment

Inclined answered 5/11, 2020 at 18:52 Comment(0)

© 2022 - 2024 — McMap. All rights reserved.