{"id":114,"date":"2026-10-12T08:12:05","date_gmt":"2026-10-12T08:12:05","guid":{"rendered":"http:\/\/www.scmgalaxy.com\/tutorials\/2009\/01\/29\/dos-tutorial-the-basics\/"},"modified":"2026-10-12T08:12:05","modified_gmt":"2026-10-12T08:12:05","slug":"dos-tutorial-the-basics","status":"publish","type":"post","link":"https:\/\/www.devopsschool.com\/blog\/dos-tutorial-the-basics\/","title":{"rendered":"MS-DOS Basics: Practical Commands for Files, Directories, and Legacy Disk Tasks"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">This guide modernizes a classic MS-DOS tutorial for engineers who need reliable command-line fundamentals in legacy systems, recovery environments, or DOS-style Windows command shells. You will learn core commands for navigation, file handling, directory management, cleanup, and floppy-era media operations.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><em>Originally published on 2009-01-29; fully revised and updated.<\/em><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Original compilation credit: Lisa Lemieux, UC Call Center. Source post: <a href=\"https:\/\/www.devopsschool.com\/blog\/dos-tutorial-the-basics\/\">DOS TUTORIAL : THE BASICS<\/a>.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" src=\"https:\/\/www.devopsschool.com\/blog\/wp-content\/uploads\/2009\/01\/dos-tutorial.png\" alt=\"DOS tutorial illustration\" \/><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">What this guide covers<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">MS-DOS is a command-line operating environment where you interact with files and disks through text commands. This tutorial focuses on practical day-to-day operations: listing files, filtering output, creating and copying files, moving across directories, deleting safely, and handling floppy disk commands used in older systems.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Before you start: environment and safety<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Use a non-production machine or a disposable directory. Many commands below can permanently remove data. DOS commands are generally case-insensitive.<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>Confirm which drive and directory you are in before running destructive commands.<\/li><li>Use <strong>DIR<\/strong> before and after copy\/delete operations to verify results.<\/li><li>Avoid wildcard deletes until you have tested your file pattern.<\/li><li>If command-history keys do not work, your shell setup may differ.<\/li><\/ul>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-1\" data-shcb-language-name=\"PHP\" data-shcb-language-slug=\"php\"><span><code class=\"hljs language-php language-bash\">C:\nCD \\\nPROMPT $P$G\nDATE\nTIME\nCLS<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-1\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">PHP<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">php<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<h2 class=\"wp-block-heading\">MS-DOS workflow at a glance<\/h2>\n\n\n\n<pre class=\"mermaid\">\nflowchart TD\n    A[Start in C drive] --> B[Check date and time]\n    B --> C[List files with DIR]\n    C --> D{Need specific files}\n    D -- Yes --> E[Filter with wildcard pattern]\n    D -- No --> F[Open or copy file]\n    E --> F\n    F --> G[Organize into directory]\n    G --> H[Verify results with DIR]\n    H --> I[Optional cleanup with DEL or RD]\n<\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">List and find files with DIR<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>DIR<\/strong> is your primary discovery command. It shows file names, extensions, sizes, and timestamps, and it supports filtering with wildcards.<\/p>\n\n\n<pre class=\"wp-block-code\"><span><code class=\"hljs language-bash\">DIR\nDIR \/P\nDIR \/W\nDIR FORMAT.COM\nDIR C*\nDIR *.BAT\nDIR \\*.SYS\nDIR &gt; PRN<\/code><\/span><\/pre>\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th>DIR form<\/th><th>Best for<\/th><th>Notes<\/th><\/tr><\/thead><tbody><tr><td>DIR<\/td><td>Full listing in current directory<\/td><td>Shows metadata for each file<\/td><\/tr><tr><td>DIR \/P<\/td><td>Paged output<\/td><td>Useful for long listings<\/td><\/tr><tr><td>DIR \/W<\/td><td>Compact multi-column view<\/td><td>Faster visual scan, less detail<\/td><\/tr><tr><td>DIR filename.ext<\/td><td>Find one exact file<\/td><td>Returns file or not found<\/td><\/tr><tr><td>DIR prefix*<\/td><td>Find files by name prefix<\/td><td>Wildcard pattern match<\/td><\/tr><tr><td>DIR *.ext<\/td><td>Find files by extension<\/td><td>Example: batch or system files<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">Create, view, copy, and rename files<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">These are core file lifecycle commands in classic DOS. In older DOS conventions, filenames often follow the 8.3 format (up to 8-character name plus 3-character extension).<\/p>\n\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-selector-tag\">COPY<\/span> <span class=\"hljs-selector-tag\">CON<\/span> <span class=\"hljs-selector-tag\">QUICK<\/span><span class=\"hljs-selector-class\">.LTR<\/span>\n<span class=\"hljs-selector-tag\">Bob<\/span>\n<span class=\"hljs-selector-tag\">Sales<\/span> <span class=\"hljs-selector-tag\">are<\/span> <span class=\"hljs-selector-tag\">up<\/span> 15%.\n<span class=\"hljs-selector-tag\">Good<\/span> <span class=\"hljs-selector-tag\">Job<\/span>!\n<span class=\"hljs-selector-tag\">Craig<\/span>\n<span class=\"hljs-selector-tag\">Ctrl<\/span>+<span class=\"hljs-selector-tag\">Z<\/span>\n\n<span class=\"hljs-selector-tag\">TYPE<\/span> <span class=\"hljs-selector-tag\">QUICK<\/span><span class=\"hljs-selector-class\">.LTR<\/span>\n<span class=\"hljs-selector-tag\">COPY<\/span> <span class=\"hljs-selector-tag\">QUICK<\/span><span class=\"hljs-selector-class\">.LTR<\/span> <span class=\"hljs-selector-tag\">QUICK2<\/span><span class=\"hljs-selector-class\">.LTR<\/span>\n<span class=\"hljs-selector-tag\">COPY<\/span> <span class=\"hljs-selector-tag\">QUICK<\/span><span class=\"hljs-selector-class\">.LTR<\/span> <span class=\"hljs-selector-tag\">QUICK<\/span><span class=\"hljs-selector-class\">.BAC<\/span>\n<span class=\"hljs-selector-tag\">REN<\/span> <span class=\"hljs-selector-tag\">QUICK2<\/span><span class=\"hljs-selector-class\">.LTR<\/span> <span class=\"hljs-selector-tag\">SALES<\/span><span class=\"hljs-selector-class\">.LTR<\/span>\n<span class=\"hljs-selector-tag\">REN<\/span> *<span class=\"hljs-selector-class\">.LTR<\/span> *<span class=\"hljs-selector-class\">.BOB<\/span><\/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<h2 class=\"wp-block-heading\">Work with directories and paths<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Use <strong>MD<\/strong> to create directories and <strong>CD<\/strong> to move through them. Use absolute paths when you want predictable behavior from any location.<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-3\" data-shcb-language-name=\"PHP\" data-shcb-language-slug=\"php\"><span><code class=\"hljs language-php language-bash\">MD \\INFO\nCD \\INFO\nCD\nPROMPT $P$G\nDIR\nCD ..\nCOPY SALES.BOB \\INFO\nCOPY QUICK.* \\INFO\nDIR \\INFO\nDIR \\<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-3\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">PHP<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">php<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<h2 class=\"wp-block-heading\">Delete files and remove directories safely<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Deletion is immediate in classic DOS.<\/strong> Validate your location and wildcard pattern first. A directory must be empty before <strong>RD<\/strong> can remove it.<\/p>\n\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-selector-tag\">DEL<\/span> <span class=\"hljs-selector-tag\">SALES<\/span><span class=\"hljs-selector-class\">.BOB<\/span>\n<span class=\"hljs-selector-tag\">DEL<\/span> <span class=\"hljs-selector-tag\">QUICK<\/span>.*\n<span class=\"hljs-selector-tag\">CD<\/span> \\<span class=\"hljs-selector-tag\">INFO<\/span>\n<span class=\"hljs-selector-tag\">DEL<\/span> *.*\n<span class=\"hljs-selector-tag\">CD<\/span> \\\n<span class=\"hljs-selector-tag\">RD<\/span> \\<span class=\"hljs-selector-tag\">INFO<\/span><\/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\"><strong>Critical safety rule:<\/strong> do not run wildcard deletion in the wrong location. Always confirm with <strong>DIR<\/strong> first.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Floppy disk commands (legacy systems)<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">These commands apply to older systems that expose floppy drives as <strong>A:<\/strong> and <strong>B:<\/strong>. Use with caution: formatting and disk copy operations affect entire media.<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-5\" data-shcb-language-name=\"CSS\" data-shcb-language-slug=\"css\"><span><code class=\"hljs language-css language-bash\"><span class=\"hljs-selector-tag\">FORMAT<\/span> <span class=\"hljs-selector-tag\">A<\/span>:\n<span class=\"hljs-selector-tag\">A<\/span>:\n<span class=\"hljs-selector-tag\">DIR<\/span>\n<span class=\"hljs-selector-tag\">C<\/span>:\n<span class=\"hljs-selector-tag\">DISKCOPY<\/span> <span class=\"hljs-selector-tag\">A<\/span>: <span class=\"hljs-selector-tag\">A<\/span>:\n<span class=\"hljs-selector-tag\">DISKCOPY<\/span> <span class=\"hljs-selector-tag\">A<\/span>: <span class=\"hljs-selector-tag\">B<\/span>:\n<span class=\"hljs-selector-tag\">COPY<\/span> <span class=\"hljs-selector-tag\">REPORT<\/span><span class=\"hljs-selector-class\">.TXT<\/span> <span class=\"hljs-selector-tag\">A<\/span>:\\<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-5\"><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<h2 class=\"wp-block-heading\">Command comparison quick reference<\/h2>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th>Task<\/th><th>Primary command<\/th><th>Example<\/th><th>Risk level<\/th><\/tr><\/thead><tbody><tr><td>List files<\/td><td>DIR<\/td><td>DIR \/W<\/td><td>Low<\/td><\/tr><tr><td>Create text file<\/td><td>COPY CON<\/td><td>COPY CON NOTE.TXT<\/td><td>Low<\/td><\/tr><tr><td>Copy file<\/td><td>COPY<\/td><td>COPY A.TXT B.TXT<\/td><td>Low<\/td><\/tr><tr><td>Rename file(s)<\/td><td>REN<\/td><td>REN *.TXT *.BAK<\/td><td>Medium<\/td><\/tr><tr><td>Delete file(s)<\/td><td>DEL<\/td><td>DEL *.TMP<\/td><td>High<\/td><\/tr><tr><td>Remove directory<\/td><td>RD<\/td><td>RD \\INFO<\/td><td>High<\/td><\/tr><tr><td>Format disk<\/td><td>FORMAT<\/td><td>FORMAT A:<\/td><td>Very high<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">Practice session in a safe sandbox<\/h2>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-6\" data-shcb-language-name=\"CSS\" data-shcb-language-slug=\"css\"><span><code class=\"hljs language-css language-bash\"><span class=\"hljs-selector-tag\">C<\/span>:\n<span class=\"hljs-selector-tag\">MD<\/span> \\<span class=\"hljs-selector-tag\">DOSLAB<\/span>\n<span class=\"hljs-selector-tag\">CD<\/span> \\<span class=\"hljs-selector-tag\">DOSLAB<\/span>\n<span class=\"hljs-selector-tag\">COPY<\/span> <span class=\"hljs-selector-tag\">CON<\/span> <span class=\"hljs-selector-tag\">NOTE<\/span><span class=\"hljs-selector-class\">.TXT<\/span>\n<span class=\"hljs-selector-tag\">This<\/span> <span class=\"hljs-selector-tag\">is<\/span> <span class=\"hljs-selector-tag\">a<\/span> <span class=\"hljs-selector-tag\">test<\/span> <span class=\"hljs-selector-tag\">file<\/span>.\n<span class=\"hljs-selector-tag\">Ctrl<\/span>+<span class=\"hljs-selector-tag\">Z<\/span>\n<span class=\"hljs-selector-tag\">DIR<\/span>\n<span class=\"hljs-selector-tag\">MD<\/span> <span class=\"hljs-selector-tag\">INFO<\/span>\n<span class=\"hljs-selector-tag\">COPY<\/span> <span class=\"hljs-selector-tag\">NOTE<\/span><span class=\"hljs-selector-class\">.TXT<\/span> <span class=\"hljs-selector-tag\">INFO<\/span>\n<span class=\"hljs-selector-tag\">DIR<\/span> <span class=\"hljs-selector-tag\">INFO<\/span>\n<span class=\"hljs-selector-tag\">DEL<\/span> <span class=\"hljs-selector-tag\">NOTE<\/span><span class=\"hljs-selector-class\">.TXT<\/span>\n<span class=\"hljs-selector-tag\">DEL<\/span> <span class=\"hljs-selector-tag\">INFO<\/span>\\<span class=\"hljs-selector-tag\">NOTE<\/span><span class=\"hljs-selector-class\">.TXT<\/span>\n<span class=\"hljs-selector-tag\">RD<\/span> <span class=\"hljs-selector-tag\">INFO<\/span>\n<span class=\"hljs-selector-tag\">CD<\/span> \\\n<span class=\"hljs-selector-tag\">RD<\/span> <span class=\"hljs-selector-tag\">DOSLAB<\/span><\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-6\"><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<h2 class=\"wp-block-heading\">Common pitfalls and best practices<\/h2>\n\n\n\n<ul class=\"wp-block-list\"><li>Always confirm drive and path before <strong>DEL<\/strong>, <strong>RD<\/strong>, or <strong>FORMAT<\/strong>.<\/li><li>Use wildcards carefully; test with <strong>DIR pattern<\/strong> first.<\/li><li>Treat printer redirection (<strong>PRN<\/strong>) and floppy commands as hardware-dependent legacy features.<\/li><li>If command recall keys differ from expectations, verify shell\/version behavior.<\/li><li>Keep backups before bulk rename or delete operations.<\/li><\/ul>\n","protected":false},"excerpt":{"rendered":"<p>This revised guide turns a classic DOS tutorial into a structured, practical reference for command-line basics. Learn essential MS-DOS commands for navigation, file operations, directory management, cleanup, and legacy floppy workflows.<\/p>\n","protected":false},"author":1,"featured_media":4002,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_joinchat":[],"footnotes":""},"categories":[49],"tags":[3014,3019,3009,3011,3013,3012,3017,3016,3010,3015,3018,213],"class_list":["post-114","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-general","tag-basic-dos-guide","tag-disk-operating-system","tag-dos","tag-dos-guide","tag-dos-learning-references","tag-dos-learning-resources","tag-dos-lessions","tag-dos-practice","tag-dos-tutorials","tag-learn-dos","tag-ms-dos","tag-tutorial"],"_links":{"self":[{"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/posts\/114","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=114"}],"version-history":[{"count":3,"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/posts\/114\/revisions"}],"predecessor-version":[{"id":78962,"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/posts\/114\/revisions\/78962"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/media\/4002"}],"wp:attachment":[{"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/media?parent=114"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/categories?post=114"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/tags?post=114"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}