I am trying to hibernate my computer from the command. I was using shutdown /s /t 20 to shutdown the the computer. I change /s to /h to hibernate and now it just returns the usage text as if it doesn't recognise what I have entered. In this is does say

/h         Hibernate the local computer.

Is there something else that I need to use with /h to get it to hibernate?

  • But in this case (the case that you use waitfor or something like that) you can't abort the scheduled hibernation.... – user116726 Feb 3 '12 at 21:57

11 Answers 11


I don't believe you can set a time for hibernation, unfortunately.


ping -n 20 > NUL 2>&1 && shutdown /h /f

The ping is a hackish way of delaying the action. -n 20 should wait for 20 seconds.

(the double && will allow you to do a Ctrl+C to cancel the operation, but if you use a simple & then pressing Ctrl+C will only break the timer and then continue to shut down)

| improve this answer | |
  • haha, +1 for this nice "sleep" replacement :) i wrote my own .exe to do this, but .. hehahahahr. – akira May 26 '10 at 7:42
  • 7
    Why we can't set time for hibernate? it wouldn't difficult for windows developers to allow this feature. but why they didn't? O.o – Amirreza Nasiri Oct 17 '14 at 4:35
  • Nice but && not working in powershell – Dr Deo Oct 12 '18 at 20:06
  • Note: the > NUL 2>&1 part will prevent any output from the ping (for more see related question). – Top-Master Oct 3 '19 at 4:38

You could also consider using "timeout" or "waitfor" commands in a similar manner.

timeout /t 20 /NOBREAK > NUL && shutdown /h


waitfor NUL /t 20 || shutdown /h

More here: How do I make a batch file wait / sleep for some seconds?

| improve this answer | |
  • 2
    Both options works, but the first is better. If you want to cancel the command via <kbd>Ctrl</kbd>+<kbd>C</kbd>, the first option will be canceled, but the second will receive a false in the first condition and jump to shutdown command directly. – IgniteCoders Jun 14 '18 at 15:43
  • The second example can be made better by using waitfor NUL /t 20 && shutdown /h instead. – Richard Sep 17 at 6:46

I use the following:

sleep 20 && shutdown /h /f

Or this if I want it off at a certain time:

At 22:30 shutdown /h /f
| improve this answer | |
  • i hsve tried the command At 22:30 shutdown /h /fin cmd prompt , i got a message like access denied but i'm the admin in my pc. awaiting for your respose – Smart003 May 27 '18 at 5:11
  • I believe in Windows 10 they've changed the permissions required to use 'at'. It's only intended for system jobs and you have to be SYSTEM account in order to execute it. Yes, SYSTEM is more privileged that admin accounts (locally) and yes, there is a way to get a command prompt under the SYSTEM account. – Thanasis Kapelonis Nov 30 '18 at 3:42

I think that it complains about time. Just put shutdown /h and it should work.

| improve this answer | |

Of course you can set TIME for hibernation.

If you really want to hibernate your computer after a specific time, all you need to do is to enter this command below into the cmd. i.e:

timeout /t 36000 /nobreak && shutdown /h

Now the computer will start to count down from 36000 to 0 before it will hibernate. But you should note that you can change 36000 into any number of seconds that suits you.

| improve this answer | |

If you have cygwin it's very simple: sleep 45m && shutdown /h

You can instruct sleep in minutes, hours, seconds and even days. Check out this answer about sleep.

| improve this answer | |

Did you try the Windows Task Scheduler? If you have the script you can set it to run at a certain time - this should answer the time delay question.

| improve this answer | |

i always use this:

shutdown -h

| improve this answer | |
  • It doesn’t matter, you can’t time a hibernation (for some reason). – Synetech Dec 14 '13 at 23:38
  • @Synetech It wouldn't difficult for windows developers to allow this feature. but why they didn't? O.o – Amirreza Nasiri Oct 17 '14 at 4:35

I was also searching for timed hibernate for long time. Finally I made the following solution:

Create a bat file as below:

timeout /t %1 /nobreak && shutdown /h

Suppose it is saved in C:\hibernate.bat

Then open Run command (Win+R) and run the bat file with the timeout seconds as below:

C:\hibernate.bat [timeout]

| improve this answer | |
  • The best solution IMHO. It's not hackish (like using ping, or redirecting timeout to NUL), it's practical. – Petr Bodnár Jan 9 at 18:24

Here is a VBScript that will prompt for the number of seconds before hibernation:

Dim intSeconds,wshShell
intSeconds = InputBox("Enter number of seconds to wait","Hibernate timer")
Wscript.Sleep intSeconds
Set WshShell = CreateObject("Wscript.Shell")
WshShell.Run "shutdown.exe -h -f"
| improve this answer | |

Instead of / use -.

Use the below command in the CMD as admin priv and test

shutdown -h
| improve this answer | |

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.