{"id":121,"date":"2026-10-12T09:21:14","date_gmt":"2026-10-12T09:21:14","guid":{"rendered":"http:\/\/www.scmgalaxy.com\/tutorials\/2009\/02\/05\/batch-program-to-shutdown-and-restart-the-computer\/"},"modified":"2026-10-12T09:21:14","modified_gmt":"2026-10-12T09:21:14","slug":"batch-program-to-shutdown-and-restart-the-computer","status":"publish","type":"post","link":"https:\/\/www.devopsschool.com\/blog\/batch-program-to-shutdown-and-restart-the-computer\/","title":{"rendered":"Windows Batch Scripts to Shut Down or Restart a PC (Legacy and Modern Methods)"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\"><em>Originally published on 2009-02-05; fully revised and updated.<\/em><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">If you need quick, repeatable power actions on Windows hosts, a small <code>.bat<\/code> file is often enough. This article explains the original script style from the 2009 post, highlights important caveats, and gives modern command examples that work on current Windows systems.<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.devopsschool.com\/blog\/wp-content\/uploads\/2009\/02\/batch-program-to-shutdown-a.png\" alt=\"batch-program-to-shutdown-restart-computer\" width=\"600\" height=\"400\" srcset=\"https:\/\/www.devopsschool.com\/blog\/wp-content\/uploads\/2009\/02\/batch-program-to-shutdown-a.png 600w, https:\/\/www.devopsschool.com\/blog\/wp-content\/uploads\/2009\/02\/batch-program-to-shutdown-a-300x200.png 300w\" sizes=\"auto, (max-width: 600px) 100vw, 600px\" \/><\/figure>\n<\/div>\n\n\n<h2 class=\"wp-block-heading\">What the original batch scripts are doing<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">The original post shows two commands: one for restart and one for shutdown, both calling a specific executable path instead of the built-in Windows command.<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>Restart script path in the post: <code>D:\\Temp\\tmp\\SHUTDOWN.EXE<\/code><\/li><li>Shutdown script path in the post: <code>d:\\tmp\\SHUTDOWN.EXE<\/code><\/li><li>Both scripts end with <code>pause<\/code> so the console stays open<\/li><\/ul>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Important:<\/strong> the paths are not identical in the source content. Confirm the executable location on your system before use.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Legacy SHUTDOWN.EXE vs built-in shutdown command<\/h2>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th>Approach<\/th><th>Restart example<\/th><th>Shutdown example<\/th><th>When to use it<\/th><th>Notes<\/th><\/tr><\/thead><tbody><tr><td>Legacy custom executable (as shown in original post)<\/td><td><code>D:\\Temp\\tmp\\SHUTDOWN.EXE \/L \/R \/Y \/C<\/code><\/td><td><code>d:\\tmp\\SHUTDOWN.EXE \/L \/Y \/C<\/code><\/td><td>Only when you must keep compatibility with an existing legacy script<\/td><td>Flag behavior depends on that specific binary\/version<\/td><\/tr><tr><td>Built-in Windows command<\/td><td><code>shutdown \/r \/t 0<\/code><\/td><td><code>shutdown \/s \/t 0<\/code><\/td><td>Preferred for modern Windows automation<\/td><td>No custom executable path required<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">Batch file examples<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">Legacy format preserved from the original post<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Use this only if your environment still relies on that exact <code>SHUTDOWN.EXE<\/code> binary.<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-1\" data-shcb-language-name=\"CSS\" data-shcb-language-slug=\"css\"><span><code class=\"hljs language-css language-bash\"><span class=\"hljs-keyword\">@echo<\/span> off\n<span class=\"hljs-attribute\">D:<\/span>\\Temp\\tmp\\SHUTDOWN.EXE \/L \/R \/Y \/C\npause<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-1\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">CSS<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">css<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-2\" data-shcb-language-name=\"CSS\" data-shcb-language-slug=\"css\"><span><code class=\"hljs language-css language-bash\"><span class=\"hljs-keyword\">@echo<\/span> off\n<span class=\"hljs-attribute\">d:<\/span>\\tmp\\SHUTDOWN.EXE \/L \/Y \/C\npause<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-2\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">CSS<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">css<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<h3 class=\"wp-block-heading\">Modern Windows-friendly scripts<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">These examples use the built-in command available on current Windows systems.<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-3\" data-shcb-language-name=\"CSS\" data-shcb-language-slug=\"css\"><span><code class=\"hljs language-css language-bash\"><span class=\"hljs-keyword\">@echo<\/span> off\nshutdown \/r \/t <span class=\"hljs-number\">0<\/span>\npause<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-3\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">CSS<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">css<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-4\" data-shcb-language-name=\"CSS\" data-shcb-language-slug=\"css\"><span><code class=\"hljs language-css language-bash\"><span class=\"hljs-keyword\">@echo<\/span> off\nshutdown \/s \/t <span class=\"hljs-number\">0<\/span>\npause<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-4\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">CSS<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">css<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p class=\"wp-block-paragraph\">Optional delayed shutdown with abort window:<\/p>\n\n\n<pre class=\"wp-block-code\"><span><code class=\"hljs language-bash\">shutdown \/s \/t 60\nshutdown \/a<\/code><\/span><\/pre>\n\n\n<h2 class=\"wp-block-heading\">Execution workflow<\/h2>\n\n\n\n<pre class=\"mermaid\">\nflowchart TD\n    A[Admin runs bat file] --> B{Use legacy SHUTDOWN EXE path}\n    B -- yes --> C[Run custom SHUTDOWN EXE with flags]\n    B -- no --> D[Run built in shutdown command]\n    C --> E{Command succeeds}\n    D --> E\n    E -- no --> F[Check path permissions or flags]\n    E -- yes --> G[System restarts or shuts down]\n<\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">Common pitfalls and best practices<\/h2>\n\n\n\n<ul class=\"wp-block-list\"><li>Verify executable paths exactly; the original post shows two different directories.<\/li><li>Prefer the built-in <code>shutdown<\/code> command for new scripts to reduce dependency on legacy binaries.<\/li><li>Test first on a non-production machine to avoid accidental downtime.<\/li><li>Use delayed shutdown (<code>\/t<\/code>) when users need a warning window before termination.<\/li><li>Document your script intent clearly (restart vs shutdown) in file names and comments.<\/li><\/ul>\n","protected":false},"excerpt":{"rendered":"<p>Learn how to build simple Windows batch files for restart and shutdown operations. This revision preserves the original legacy SHUTDOWN.EXE approach and adds modern, built-in shutdown command examples.<\/p>\n","protected":false},"author":1,"featured_media":4028,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_joinchat":[],"footnotes":""},"categories":[49],"tags":[276,1966,3105,3111,3112,2301,3113,729,3109,3106,3110,3108,3107],"class_list":["post-121","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-general","tag-batch","tag-batch-command","tag-batch-program","tag-batch-program-guide","tag-batch-program-tutorial","tag-computer","tag-how-to","tag-restart","tag-restart-batch-program","tag-shutdown","tag-shutdown-batch-program","tag-system-restart-batch-command","tag-system-shutdown-batch-command"],"_links":{"self":[{"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/posts\/121","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/comments?post=121"}],"version-history":[{"count":3,"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/posts\/121\/revisions"}],"predecessor-version":[{"id":78970,"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/posts\/121\/revisions\/78970"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/media\/4028"}],"wp:attachment":[{"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/media?parent=121"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/categories?post=121"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/tags?post=121"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}