Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- @REM - BatchDOS.BAT (18 Mar 2025 // 19 Mar 2025): A DOS-like OS environment via batch scripting
- @REM - Original Message: https://www.reddit.com/r/Batch/comments/1jdzn4i/i_need_help_fixing_my_script/
- @ECHO OFF
- rem -- Initialize Environment Variables
- :Variables
- SETLOCAL
- SET "#DOSNAME=Batch DOS"
- SET "#PROMPT=MAD OS> "
- SET "#VER=v1.1.0.050"
- SET "#RETURN=ECHO: & GOTO :GetCommand"
- SET "#SLOW_RETURN=TIMEOUT 10 & %#RETURN%"
- rem -- Put all valid command in the following variable, as you make them -- without their - or / delimiters
- SET "#ALL_COMMANDS=HELP H MOVE LIST VARS VER EXIT"
- :GetCommand -- Ask for a command in our "shell"
- TITLE [%#DOSNAME% %#VER%] >NUL 2>NUL
- SET /P "#USER_INPUT=%#PROMPT%"
- rem -- Check for valid parameters with - or / according to the parameter list
- FOR /F "TOKENS=1-3*" %%U IN ('ECHO %#USER_INPUT%') DO FOR %%C IN (%#ALL_COMMANDS%) DO FOR %%D IN (/ -) DO IF /I "%%~U"=="%%~D%%~C" (
- rem -- For valid commands, create a variable with the command removed, and jump to appropriate subroutine
- SET "#CMD=%%U"
- SET "#PARAM1=%%V"
- SET "#PARAM2=%%W"
- SET "#PARAMS=%%V %%W %%X"
- ECHO:
- GOTO :Get%%~C
- )
- ECHO:
- ECHO Unknown command: %#USER_INPUT%
- ECHO:
- ECHO Type /help or /h for assistance
- %#RETURN%
- :GetExit -- Reset Environment Variables and Exit Batch File
- TITLE Command Prompt >NUL 2>NUL
- ECHO Thanks for using the %#DOSNAME% Environment
- ECHO:
- ENDLOCAL
- EXIT /B
- :GetHelp -- Display Syntax Help if Required/Requested
- :GetH ----- Display Syntax Help if Required/Requested (Abbreviated Option)
- ECHO %#DOSNAME% Environment Help
- ECHO:
- ECHO YOU TYPED: %#USER_INPUT%
- ECHO:
- ECHO CMD SYNTAX: ^</move^> ^<source^> ^<dest^>
- ECHO ^</list^> [folder^|file]
- ECHO ^</vars^> [partial variable] [partial variable] ...
- ECHO ^</exit^>
- ECHO ^</ver^>
- ECHO ^</help^|/h^>
- ECHO:
- ECHO CMD OPTIONS:
- ECHO /HELP .... Display this help message
- ECHO /VARS .... Display all environment variables, or those starting with provided text
- ECHO /VER ..... Display %#DOSNAME% environment version info
- ECHO /LIST .... Displays a directory listing
- ECHO /MOVE .... Moves a file or folder (not fully implemented)
- ECHO /EXIT .... Exits the %#DOSNAME% environment
- ECHO:
- ECHO SYNTAX EXAMPLES:
- ECHO /HELP
- ECHO /VER
- ECHO /VARS
- ECHO /VARS user pro #
- ECHO /LIST
- ECHO /LIST C:\
- ECHO /LIST %WinDir%
- ECHO /MOVE "C:\Temp\Here" "D:\Temp\There"
- ECHO /EXIT
- ECHO:
- ECHO USAGE NOTES:
- ECHO * Parameters surrounded by ^<^> are mandatory.
- ECHO * Parameters surrounded by [] are optional.
- ECHO * Options are case-insensitive, and can be prefaced by "-" or "/".
- %#RETURN%
- :GetMove -- Move Files (Implementation Incomplete)
- SET "#INVALID="
- ECHO Moving the following files and/or folders:
- ECHO -- Source ........ %#PARAM1%
- ECHO -- Destination ... %#PARAM2%
- ECHO:
- IF "%#PARAM1%"=="" SET "#INVALID=TRUE" && ECHO ERROR: Missing source file/folder
- IF "%#PARAM2%"=="" SET "#INVALID=TRUE" && ECHO ERROR: Missing destination file/folder
- IF DEFINED #INVALID %#RETURN%
- rem -- Use "IF EXISTS" to verify source and possibly destination
- rem -- MOVE %#PARAM1% %#PARAM2%
- %#SLOW_RETURN%
- :GetVars -- Display Current Environment Variables
- ECHO Current environment variables starting with: %#PARAMS%
- ECHO:
- IF "%#PARAM1%"=="" ( SET & ECHO: ) ELSE ( FOR %%V IN (%#PARAMS%) DO SET %%~V & ECHO: )
- %#SLOW_RETURN%
- :GetList -- Get directory listing
- ECHO Getting Directory of: %#PARAMS%
- DIR %#PARAMS%
- %#SLOW_RETURN%
- :GetVer -- Display Current Version of DOS-like Environment
- ECHO %#DOSNAME% Environment %#VER%
- %#RETURN%
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement