In the 1980’s, when IBM introduced the IBM PC which was built with the Intel 8088 microprocessor, they needed an operating system. They approached Microsoft who provided IBM with the “Microsoft Disk Operating System”: MS-DOS.
A Disk Operating System is operated via a command prompt. The user can interact by typing key commands to maintain and operate their computer. One of the key functionality of a DOS operating system is the ability to navigate through the files and folders structure and create, rename, move or delete files and folders.
Try it yourself, by accessing this online DOS emulator.
In this blog post we will create a “DOS emulator” but only focusing on the navigation and maintenance of the files and folders structure. We will not implement other functionalities of a DOS.
Files & Folders Tree Structure
On a computer system, files and folders are organised using a Tree structure. For instance, let’s consider the following folder structure:
In MS-DOS, the main commands to navigate through and maintain a folder structure are:
Command | Description |
DIR | To list the content of a directory/folder. |
CD | To change directory/folder. This can be used to access a subfolder or a parent folder (e.g. cd ..) |
MKDIR | To make a new sub-directory/folder. |
DEL | To delete a file or a directory/folder. This would delete the content (subfolders and files of the directory) |
MOV | To move a folder or a file from one folder to another. |
RENAME | To rename a folder or a file. |
Class Diagram
We will use a File class and a Folder class to implement this tree structure:
Python Code
We have started the code for you and implemented the CD, DIR, MKDIR, DELETE and RENAME instructions as well as a HELP and a CLS (clear screen) instruction. Your task is to complete this code to create the MOVE instruction and apply it to the Folder class to let the user move a file or folder within a subfolder or the parent folder. For instance to move a file to the parent folder, the user would type the following instruction:
MOVE sea.jpg ..
Or to move a file into a subfolder called “landscapes”:
MOVE sea.jpg landscapes