home *** CD-ROM | disk | FTP | other *** search
- @echo off
- cls
- echo %@upper[%0]:
- text
-
- This file contains several sample batch files. We invite you to study
- them in conjunction with your 4DOS manual and documentation. You may
- want to PRINT or LIST the contents and modify any part you wish. The
- various segments are separated from each other by a line of hyphens
- ("-") so you can easily extract the specific component you're most
- interested in.
-
- Included are:
-
- STATUS.BTM - Gives a quick description of your system.
- 4MENU.BTM - A very simple menuing system.
- ONCEADAY.BTM - Runs a command during the first boot of the day.
- * FRAC.BTM - Computes the fractional part of a number
- * HMENU.BTM - A powerful menuing system which you must customize
- for your system.
- * WHICH.BTM - Ready to use convenient way to detect "WHICH" process
- (internal command, alias, executable extension,
- external command, or batch file) is run when you
- invoke a command.
-
- * Note: These three batch files were originally contributed by long-time
- 4DOS user and supporter Ray Tackett. Thanks, Ray!
- endtext
- pause
-
- : ---------------------------------------------------------------------
- rem STATUS.BTM
- rem
- rem This sample batch file will use some internal 4DOS variable
- rem functions to try to describe your current configuration.
- rem
- cls
- echo.^echo.
- echo System status:
- echo.
- echo Date: %_dow %_date
- echo Time: %_time
- echo 4DOS version: %_4ver
- echo OS: %_dos
- echo DOS version: %_dosver
- echos `CPU: `
- iff %_cpu == 86 then
- echo 8088/8086
- elseiff %_cpu == 186 then
- echo 80188/80186
- elseiff %_cpu == 200 then
- echo V20/V30
- elseiff %_cpu == 286 then
- echo 80286
- elseiff %_cpu == 386 then
- echo 80386
- elseiff %_cpu == 486 then
- echo 80486
- endiff
- if %_ndp ne 0 echo %_ndp Numeric Coprocessor detected
- echo Video: %_video
- echo Monitor type: %_monitor
- quit
-
-
- : ---------------------------------------------------------------------
- : 4MENU.BTM
- : This sample batch file will create a simple "menu" to run
- : your commonly used programs.
- :
- : Note that, instead of REM statements, it uses the alternative
- : practice of creating "do-nothing" labels by starting comment
- : lines such as this one with a ":"
- :
- @echo off
- : First, we define a couple of aliases which will be used several
- : times in the remainder of this batch file, after first saving
- : any existing alias by the same name with the SETLOCAL command.
- setlocal
- alias in `pushd %1 ^ %2& ^ popd`
- alias choice `elseiff "%userchoice" == "%1" then`
- :
- : Start with a clear screen
- cls
- :dispmenu
- : Position the cursor
- screen 8 0
- : Display the menu choices
- text
-
- Enter your choice:
-
- 0. EXIT
- 1. Word Processing
- 2. Spreadsheet
- 3. Communications
-
- endtext
- : Ask the user to enter a value for environment variable CHOICE
- inkey Which? %%userchoice
- : Does the user want to exit the menu?
- iff "%userchoice" == "0" then ^ quit
- : Check the valid options
- : Each line correspond to a menu choice
- : The paranmeters are a directory to go to, then the program to run
- choice 1 ^ in c:\letters c:\ws\ws.exe
- choice 2 ^ in d:\finance c:\quattro\q.exe
- choice 3 ^ in c:\comm c:\procomm\pcplus.exe /fprofile
- else
- : The user entered an invalid option
- scrput 23 0 bri whi on red Invalid choice, try again
- endiff
- : Loop back to the beginning
- goto dispmenu
-
-
- : ---------------------------------------------------------------------
- : ONCEADAY.BTM
- @echo off
- :
- : This batch file will start a specified command the first time it
- : called each day after 6:00 in the morning
- : example:
- : ONCEADAY DEFRAG C:
- :
- : Note that, instead of REM statements, it uses the alternative
- : practice of creating "do-nothing" labels by starting comment
- : lines such as this one with a ":"
- :
- :
- : First, we reset environment variable LASTDATE after saving any
- : current value it may already have with the SETLOCAL command
- setlocal
- set lastdate=0
- : Is there already a file called ONCEADAY.DAT in the
- : root directory of the boot drive?
- iff exist %_boot:\onceaday.dat then
- : If so, set LASTDATE to the contents of the first line
- set lastdate=%@line[%_boot:\onceaday.dat,0]
- endiff
- : Is the date in the file greater than today's date?
- : (the @DATE function turns a date into an integer number)
- iff %@date[%_date] gt %lastdate then
- : If so, is it currently past 6:00? (an arbitrary time)
- iff %@time[%_time] gt %@time[06:00] then
- : Yes! Invoke whatever command was passed as an argument to this
- : batch file, then return
- call %&
- : After executing the command, place today's date in integer
- : format into file ONCEADAY.DAT
- echo %@date[%_date] >! %_boot:\onceaday.dat
- endiff
- endiff
- :
-
-
- : ---------------------------------------------------------------------
- : FRAC.BTM
- @echo off
- rem 4DOS provides an internal function, @int[], but not a way
- rem to get the fractional part of a number. Here's a tool.
- rem This is also a simple illustration of modifying an environment
- rem variable whose name is passed in.
-
- rem The key lesson in this example is the use and modification of
- rem the VALUE of a variable given its NAME in %1.
-
- rem This .btm is meant to be CALLed from another batch file.
- rem
- if "%1" == "" .or. "%[%1]" == "" goto help
- rem ! !
- rem ! The VALUE of variable "name"
- rem The NAME of a variable
-
-
- rem The following sets the given variable to the fractional part.
- rem Note the function nesting.
-
- rem The third argument of @substr is omitted, referring to the rest
- rem of the string by default
-
- rem The length of the integer portion is used as the offset into the
- rem string to begin and extract the fraction portion.
-
- set %1=%@substr[%[%1],%@len[%@int[%[%1]]]]
- :exit
- quit 0
-
- :help
- rem
- rem Note the use of the name of the command the user typed, even
- rem though this .btm file may have been renamed.
- rem
- echo Usage: %@name[%0] var
- echo.
- echo var = Any environment variable whose value is the input
- echo New value returned in var, replacing original value.
- echo New value is the fraction portion of a floating point value.
- echo Example: set foo=12.345
- echo %@name[%0] foo
- echo set foo
- echo .345
- quit 4
-
-
- : ---------------------------------------------------------------------
- : HMENU.BTM
-
- rem This batch file will NOT run on your system without modification, and
- rem is provided as an example only.
-
- @echo off
- cd d:\
- cd c:\
- set lastx=0
- set lasty=0
- :start
- unset thingie tofile fromfile wtf>& nul
- cls
- drawbox 0 0 24 79 2 white on blue fill blue
- scrput 2 8 white on blue --------- Function Keys ------ ------ Shift Function Keys ------
- scrput 3 8 white on blue f1 Kings *f1 Gomoku
- scrput 5 8 white on blue f2 Show document directory *f2 Communications
- scrput 7 8 white on blue f3 Manual command *f3 First Publisher
- scrput 9 8 white on blue f4 Edit a document *f4 Shooting gallery
- scrput 11 8 white on blue f5 Mahjongg *f5 Breakout
- scrput 13 8 white on blue f6 Solitare *f6 Reset Trackball
- scrput 15 8 white on blue f7 Copy a file *f7 DB3+
- scrput 17 8 white on blue f8 Envelope on Daisy Wheel *f8 Epson printer page eject
- scrput 19 8 white on blue f9 Epson printer reset *f9 Super Fly
- scrput 21 8 white on blue f10 DOS Environment *f10 Shut down system
- iff "%lastx%" ne "0" then^scrput %lasty% %lastx% bright white on blue @^endiff
- rem drawvline 0 39 25 1 white on blue
- :timeloop
- screen 0 0
- scrput 1 30 white on blue %_date %_time
- inkey /w1 %%WTF
- if "%WTF%" == "" goto timeloop
- rem
- if %WTF% == @59 goto dof1
- if %WTF% == @60 goto dof2
- if %WTF% == @61 goto dof3
- if %WTF% == @62 goto dof4
- if %WTF% == @63 goto dof5
- if %WTF% == @64 goto dof6
- if %WTF% == @65 goto dof7
- if %WTF% == @66 goto dof8
- if %WTF% == @67 goto dof9
- if %WTF% == @68 goto dof10
- if %WTF% == @84 goto doshf1
- if %WTF% == @85 goto doshf2
- if %WTF% == @86 goto doshf3
- if %WTF% == @87 goto doshf4
- if %WTF% == @88 goto doshf5
- if %WTF% == @89 goto doshf6
- if %WTF% == @90 goto doshf7
- if %WTF% == @91 goto doshf8
- if %WTF% == @92 goto doshf9
- if %WTF% == @93 goto doshf10
- if %WTF% == @113 goto doshf10
- rem
- goto start
- :dof1
- set lastx=11
- set lasty=3
- c:\games\kings
- goto start
- :dof2
- cls
- dir /4apv c:\budnick\*.*
- pause
- set lastx=11
- set lasty=5
- goto start
- :dof3
- scrput 2 27 bright yel on blue "?" will abort the command
- scrput 8 8 white on blue Command:
- scrput 8 16 bright yellow on blue _____________________________________________________________
- screen 8 16
- input %%thingie
- cls
- if "%thingie%" == "?" goto start
- set lastx=11
- set lasty=7
- %thingie%
- pause
- goto start
- :dof4
- scrput 2 27 bright yel on blue "?" will abort the command
- scrput 10 8 white on blue Document name:
- scrput 10 22 bright yellow on blue ____________
- screen 10 22
- input %%thingie
- if "%thingie%" == "?" goto start
- set lastx=11
- set lasty=9
- cls
- rem call hdb %thingie%
- ws c:\budnick\%thingie%
- fr
- goto start
- :dof5
- scrput 12 8 white on blue Board number:
- scrput 12 21 bright yellow on blue ______
- screen 12 21
- input %%thingie
- set lastx=11
- set lasty=11
- iff "%thingie%" == "" then^c:\games\mahjongg -y -f -m -n^
- else^c:\games\mahjongg -y -f -m -n -b%thingie%^endiff
- goto start
- :dof6
- keystack "NNS1Hanny" 13 "YYY" 0 0 "x"^c:\games\solitare
- set lastx=11
- set lasty=13
- goto start
- :dof7
- scrput 2 27 bright yel on blue "?" will abort the command
- scrput 16 8 white on blue Copy from:
- scrput 16 18 bright yellow on blue ___________________________________________________
- screen 16 18
- input %%fromfile
- if "%fromfile%" == "" goto dof7
- if "%fromfile%" == "?" goto start
- if not exist %fromfile% goto dof7
- :doof7
- scrput 16 8 white on blue Copy to:
- scrput 16 16 bright yellow on blue ____________________________________________________
- screen 16 16
- input %%tofile
- if "%tofile%" == "?" goto start
- if "%tofile%" == "" goto doof7
- set lastx=11
- set lasty=15
- cls
- copy %fromfile% %tofile%
- pause
- goto start
- :dof8
- scrput 2 27 bright yel on blue "?" will abort the command
- scrput 18 8 white on blue Document name:
- scrput 18 22 bright yellow on blue ____________
- screen 18 22
- input %%thingie
- if "%thingie%" == "" goto dof8
- if "%thingie%" == "?" goto start
- if not exist c:\budnick\%thingie% goto dof8
- set lastx=11
- set lasty=17
- envelope c:\budnick\%thingie% /c > com2
- goto start
- :dof9
- pinit
- set lastx=11
- set lasty=19
- goto start
- :dof10
- unset wtf
- cls
- echo type HMENU at any DOS prompt to return to the main menu
- quit
- :doshf1
- set lastx=45
- set lasty=3
- c:\games\gomoku
- goto start
- :doshf2
- cls
- call tc
- set lastx=45
- set lasty=5
- goto start
- :doshf3
- e:
- cd e:\pub
- fp
- cd e:\
- c:
- colset 17 50 5a 03
- set lastx=45
- set lasty=7
- goto start
- :doshf4
- to c:\games^shoot^fr
- set lastx=45
- set lasty=9
- goto start
- :doshf5
- c:\games\breakout S-6
- set lastx=45
- set lasty=11
- goto start
- :doshf6
- trakball dos
- set lastx=45
- set lasty=13
- goto start
- :doshf7
- trakball dbase^to db3^dbase^fr
- set lastx=45
- set lasty=15
- goto start
- :doshf8
- pff
- set lastx=45
- set lasty=17
- goto start
- :doshf9
- pushd c:\games
- fly
- popd
- set lastx=45
- set lasty=19
- goto start
- :doshf10
- cls
- sysdown
- quit
-
-
- : ---------------------------------------------------------------------
- : WHICH.BTM
- rem Determine "WHICH" command will be executed -- internal,
- rem alias, external, executable extension, etc.
-
- rem None of the rems is necessary to proper operation and may be
- rem deleted for ordinary use.
-
- setlocal
-
- rem See if a command to check was supplied.
-
- iff "%1" == "" then ^ echo Syntax: where command ^ quit
- else
- rem
- rem separate the name and the extension (if any)
- rem
- set targ=%@upper[%@name[%1]]
- set ex=%@upper[%@ext[%1]]
- endiff
-
- rem Skip some stuff if no extension
-
- if "%ex" == "" goto noext
-
- rem See if the extension is one of the usual executables
-
- if %ex == COM .or. %ex == EXE .or. %ex == BTM .or. %ex == BAT goto catext
-
- rem There is an extension, but it's not a normal executable. See if there's
- rem such an extension in the environment -- i.e., a user-defined executable
- rem extension.
-
- set ey=.%ex
- iff "%[%ey]" ne "" then
-
- rem It's a defined executable extension. Tell the user.
-
- echo Executable extension: %@upper[%[%ey]]
-
- rem Now find out whether the program which is supposed to be run
- rem against the executable extension file is there!
-
- iff "%@path[%[%ey]]" == "" then
- %0 %@name[%[%ey]].%@ext[%[%ey]]
- endiff
- iff not exist %@full[%[%ey]] then
- echo Extension program not found
- endiff
- else
- echo Executable extension .%ex definition not found
- endiff
- goto cleanup
-
- rem Above was for executable extensions. What follows is the branch
- rem label for normal executables (.BTM, .BAT, .COM, and .EXE)
-
- :catext
-
- rem Put the file name back together with its extension.
-
- set targ=%targ.%ex
- :noext
-
- rem Check for alias or internal first, because they would be found first.
-
- iff isalias %targ then
- echos Alias:` `
- alias %targ
- goto cleanup
- elseiff isinternal %targ then
- echo %@upper[%1] is an internal command
- goto cleanup
- endiff
-
- rem It wasn't an alias or an internal, look down the PATH
-
- set targ=%@search[%targ]
- iff "%targ" ne "" then
- iff "%@ext[%targ]" == "bat" .or. "%@ext[%targ]" == "btm" then
- echo Batch File: %targ
- else
- echo Program: %targ
- endiff
- else
- echo %@upper[%1] is an unknown command!
- beep
- endiff
- goto cleanup
- :cleanup
- endlocal
-
- rem The branches to "cleanup" and the "endlocal" are not strictly necesary.
- rem They could all have been "quit", but I like programs to have a single
- rem exit point and exit in a way which is obviously clean.
-
-