Aros/User/DOS

< Aros < User
Navbar for the Aros wikibook
Aros User Docs
Aros User Docs
Aros User FAQs
Aros User Applications
Aros User DOS Shell
Aros/User/AmigaLegacy
Aros Dev Docs
Aros Developer Docs
Porting Software from AmigaOS/SDL
For Zune Beginners
Zune .MUI Classes
For SDL Beginners
Aros Developer BuildSystem
Specific platforms
Aros Intel AMD x86 Installing
Aros x86 Audio/Video Support
Aros x86 Network Support
Aros x86 Complete System HCL
Aros Storage Support IDE SATA etc
Aros Poseidon USB Support
x86-64 Support
Motorola 68k Amiga Support
Linux and FreeBSD Support
Windows Mingw and MacOSX Support
Android Support
Arm Raspberry Pi Support
PPC Power Architecture
misc
Aros Public License


The AROS shell

In Wanderer (AROS Desktop / GUI), hit RightAROS + w (or F12 + w) (or use right mousebutton to access Wanderer's menu on the top of the screen) to open a shell window. To close the shell window, click on the top left X of the shell window or type in

endcli



Beginners Tutorial / Basic Usage

By default, the current directory is being displayed as part of your shell prompt. By default, your starting point is 'System:', the OS' root directory.

System:>

Type 'dir' and hit return. You will see the contents of the current directory.

System:>dir

You can run an executable or enter a directory just by typing it's name (and hitting return). Enter the 'C' directory simply by typing 'c' (AROS DOS is case insensitive):

System:>c

Now press the up-arrow button twice. AROS shell has got a command history, which allows you to repeat or re-use commands quickly. Now you should see the 'dir' command again, so hit return. You will see the contents of the 'c' directory you've just entered.

System:c>dir


This directory is AROS' primary location for executables which can be run from any directory. Now type '/' (just a slash) and hit return. You've just moved up one directory, back to 'System:'

System:>

Now try another 'dir' like command (which resides in the 'c' directory), 'list':

System:>list

The output is quite the same as 'dir'. But you can control the 'list' output with options. AROS DOS command line options are recognized by their name, and eventually their position on the command line. Try this:

System:>list sub d

The output will now consist of all the directories contents which names contain the substring 'd'. Another example, another option:

System:>list sub d all

This will list the contents matching 'd' recursively.


AROS dos script scripting


http://uk.aminet.net/docs/help/adosbegin.lha

http://se.aminet.net/pub/aminet/docs/help/adosbegin.lha


IF <condition>

these commands are executed if the condition is true

ELSE

these commands are executed if the condition is false

ENDIF

<condition> can be one of

WARN - return code of the previous command is 5 or higher.

ERROR - return code of the previous command is 10 or higher.

FAIL - return code of the previous command is 20 or higher.

EXISTS <filename> - check if file or directory exists.

<a> EQ <b> - string comparison.

<a> EQ <b> VAL - numeric comparison.

<a> GT <b> - same as EQ, just means "greater than".

<a> GE <b> - same as EQ, just means "greater or equal".

any of the above can be negated by NOT. e.g. use NOT GT for "less or equal" or NOT GE for "less than".


Escape Codes

07 Bell - Flash screen and sound bell
08 Backspace - move cursor back one position
09 vertical tab - move cursor up one line
10 line feed - move cursor down one line
11 is not listed in my book
12 form feed - clear screen
13 Carriage return - move cursor to start of line
14 Set MSB of each character. (Print extended chars)
15 Clear MSB of each character.
*e[c - Clear window and turn all modes off
*e[0m - All modes turned off
*e[1m - Bold text enabled
*e[3m - Italic enable
*e[4m - Uderline
*e[7m - Inverted text enable
*e[8m - text becomes invisible (grey on grey)
*e[3xm - Text colour becomes colour x (0-7)
*e[4xm - Background colour becomes colour x (0-7)
*e[n@ - Insert n spaces at cursor position.
*e[nA - Cursor up n lines. Default 1
*e[nB - Cursor down n lines. Default 1
*e[nC - Cursor forward n characters. Default 1
*e[nD - Cursor back n characters. Default 1
*e[nE - Cursor next n lines(to column 1). Default 1
*e[nH - Cursor to row n (Y position)
*e[;nH - Cursor to column n (X position)
*e[y;xH - Cursor to position X,Y
*e[J - Erase from cursor to end of display
*e[K - Erase from cursor to end of line
*e[I - Insert line above line at cursor
*e[M - Delete line at cursor
*e[nS - Scroll up n lines
*e[nT - Scroll down n lines
*e[nt - set page length to n lines (in current font)
*e[nu - Set line length in characters of current font
*e[nx - Set left offset in characters
*e[ny - Set top offset in lines
*e[0 p - Disable cursor: Note space between zero and p
*e[ p - Enable cursor. Note space


Example of coloured text in the shell

prompt "*E[>1m*E[1;37;41m%n.%s> *E[0;32;41m"
echo "*E[0;0H*E[J" 
</pre > 

<pre > 
*E[>1m
</pre > 
Is a so called SGR command that omits the first few parameters. It turns BOLD ON.

<pre > 
*E[1;37;41m%n.%s> 
</pre > 
SGR command that tells:
- boldface (1)
- foregroundcolor 7 (37).
Which means it is using pencolor #7 (which is black by default on aros, hence the setpencolor command).
- use background color 1 (41).
Which means it is using pencolor #1 (which is black by default on aros).
- %n means printing the current opened cli/shell-number
- %s means printing the current path
- > print a nice pipe token after all the above (and also a space-character).

<pre > 
*E[0;32;41m
</pre > 
SGR command that tells:
- plain text (0)
- foregroundcolor 2 (32).
Which means it is using pencolor #2 (which is white by default on aros).
- backgroundcolor 1 (41).
Which means it is using pencolor #1 (which is black by default on aros).

<pre > 
*E[0;0H
</pre > 
command 'Cursor position'
- set row to 0 (0)
- set column to 0 (0)
Please note that this does not seem to work on AROS as on classic (not checked). it seems that the lowest nr for AROS to use is 1 (for both left and top).

<pre > 
*E[J
</pre > 
command 'erase in display' (no additional parameters used in this command).





==Drives, Files, Assigns, Directories==

A certain set of directories and files needed by the operating system will be present in every AROS distribution. Additionally, "assigns" (logical, not physical, drives) point to physical drive's partitions or locations in the partition's directory structure.



===Physical drives===
:By default harddrives on the IDE bus are assigned the drive names "DH0:", "DH1:", etc.
:By default USB pendrives are assigned the drive names "DU0:", "DU1:", etc.
:By default CD / DVD drives on the IDE bus are assigned the drive names "CD0:", "CD1:", etc.




===Logical drives, "assigns"===
<code>
SYS:
Extras:
DEVS:
Development:
L:
S:
LIBS:
C:
ENV:
RAM:
ENVARC:
MUI:
T:
</code>



===Directories and files===



==== SYS:Prefs ====

...contains all system preferences programs, like "Screenmode", "Locale", "Time", "Trident" (USB), etc.
Is part of default path, thus entering "screenmode" in shell will bring up "Screenmode" prefs program.


==== SYS:Devs ====

...contains device drivers and datatypes. Move a file to the corresponding subdirectory of "SYS:Storage" to disable it (after reboot). More (currently disabled) device drivers or datatypes may be found unter "SYS:Storage", move to "Devs:" to enable (after reboot).

==== SYS:Storage ====

...is a directory meant to store optional or currently unused devices and datatypes.
Move contents of "Devs:" (see above) here to disable device drivers (after reboot).


==== S:startup-sequence ====

...is a script that will be run when starting up the operating system. It is also used by some applications to store their individial requirements (if any - mosty this will be a line like "assign PROGRAMNAME: SYS:path/to/installation/of/PROGRAMNAME")


==== S:user-startup ====

...is a script that will be run by S:startup-sequence. It's the place to put your own stuff. Imagine you have some executable programs installed in a different directory than "C:" (or any other in default "path") but still want to access them without typing their full paths, you may add a line like this: "path WORK:path/to/my/program/ add".

It is also used by some applications to store their individial requirements (see above).


==== S:shell-startup ====

...is a script that will be run when starting up a new shell. By default, it contains commands that define the look of your shell prompt. See description of 'prompt' command.






==AROS DOS Commands Reference==



{| class="wikitable"
!Key
!desc
|----
|/A
| Required argument
|----
|/F
| Final argument in list
|----
|/K
| Keyword must be entered with argument
|----
|/M
| Multiple arguments
|----
|/N
| Number
|----
|/S
| Switch (optional)
|----
|}


{| class="wikitable" width="90%"
! colspan="2" |Addbuffers
|----
|width="20%"| Format:
| Addbuffers Drive/A Buffers/N
|----
|Purpose:
| Add memory to disk buffers to improve speed.
|----
|Parameters:
| 
;Drive: Name of drive
;Buffers: Number of 512k buffers to add.
|----
|Example:
| Addbuffers DH0: 10
|----
|}


{| class="wikitable" width="90%"
!colspan="2" |AddDatatypes
|----
|width="20%"| Format:
| AddDataTypes files/M QUIET/S REFRESH/S LIST/S
|----
|Purpose:
| Activates datatypes or adds another datatype if not detected at startup
|----
|Parameters:
| 
;files: List of datatypes to add, 
;Quiet: No output, 
;Refresh: Update datatypes.
|----
|Example:
| AddDataTypes gif.datatype REFRESH
|----
|}


{| class="wikitable" width="90%"
!colspan="2" |Alias
|----
|width="20%"| Format:
| Alias Name String/F
|----
|Purpose:
| Assigns a short name to a dos command.
|----
|Parameters:
| 
;Name: Alias name, 
;String: String or command to use for alias.
|----
|Example:
| Alias Del Delete
|----
|}


{| class="wikitable" width="90%"
!colspan="2" |Ask
|----
|width="20%"| Format:
| Ask Prompt/A
|----
|Purpose:
| Asks a question in a script (reply y/n). Use IF WARN to test for a yes (value 5).
|----
|Parameters:
| 
;Prompt: Text to be displayed.
|----
|Example:
| Ask "Are you sure? Y/n"
|----
|}


{| class="wikitable" width="90%"
!colspan="2" |Assign
|----
|width="20%"| Format:
| Assign Name Target/M LIST/S EXISTS/S DISMOUNT/S DEFER/S PATH/S ADD/S REMOVE/S
|----
|
| VOLS/S DIRS/S DEVICES/S
|----
|Purpose:
| Assign names to directory paths.
|----
|Parameters:
|
;Name: Name of the assign, 
;Target: Directory path, 
;List: Display list of assigns
;Exists: Test if assign exists (use IF WARN), 
;Dismount: Remove assign
;Defer: Assign later
;Path: Add assign with path,
;Add: Add a new target to existing path (like LIBS:)
;Remove:Remove an assign,
;Vols: List volumes, 
;Dirs:List directories, 
;Devices: List devices.
|----
|Example:
| Assign Development: Extras:bin
|----
|}


{| class="wikitable" width="90%"
!colspan="2" |Avail
|----
|width="20%"| Format:
| Avail CHIP/S FAST/S TOTAL/S FLUSH/S
|----
|Purpose:
| Memory availability
|----
|Parameters:
| 
;Chip: Display chip memory
;Fast: Display fast memory
;Total: Display all memory 
;Flush: Free up memory
|----
|Example:
| Avail TOTAL
|----
|}


{| class="wikitable" width="90%"
!colspan="2" |Break
|----
|width="20%"| Format:
| Break Process/A/N ALL/S C/S D/S E/S F/S
|----
|Purpose:
| Stop a program (see Status)
|----
|Paramters:
| 
;Process: Process name or Port
;All: Apply C,D,E and F
;C: Apply Ctrl+C
;D: Apply Ctrl+d
;E: Apply Ctrl+E
;F: Apply Ctrl+F
|----
|Example:
| Break 2 C
|----
|}


{| class="wikitable" width="90%"
!colspan="2" |CD
|----
|width="20%"| Format:
| CD Dir/A
|----
|Purpose:
| Change directory
|----
|Parameters:
|
;Dir: Directory to change to
|----
|Example:
| CD Text_Files
|----
|}


{| class="wikitable" width="90%"
!colspan="2" |ChangeTaskPri
|----
|width="20%"| Format:
| ChangeTaskPri Pri=Priority/A/N Process/K/N
|----
|Purpose:
| Changes program's execution priority (see Status)
|----
|Parameters:
| 
;Pri: Priority to apply (-128 to +127) 
;Process: Process number (see Status)
|----
|Example:
| ChangeTaskPri 2 1
|----
|}


{| class="wikitable" width="90%"
!colspan="2" |Conclip
|----
|width="20%"| Format:
| Conclip Unit/N OFF/S
|----
|Purpose:
| Activates clipboard device
|----
|Parameters:
| 
;Unit: Clipboard unit
;Off: Turn off clipboard
|----
|Example:
| Conclip 1
|----
|}


{| class="wikitable" width="90%"
!colspan="2" |Copy
|----
|width="20%"| Format:
| Copy From/M To/A ALL/S QUIET/S BUF=BUFFER/K/N CLONE/S DATES/S NOPRO/S COM/S NOREQ/S
|----
|Purpose:
| Copy files (with/without protection bits)
|----
|Parameters:
| 
;From: Files to copy, 
;To: Directory or file to copy to
;All: Copy all files,
;Quiet: No output, 
;Buffer: Size of buffer (default = 100K)
;Clone: Copy file and datestamp, protect bits and comment
;Dates:  Copy datestamp as well
;NoPro: Set default protection bits
;Com: Copy comment 
;NoReq: No requester popups
|----
|Example:
| Copy mydoc.txt docs: Dates
|----
|}


{| class="wikitable" width="90%"
!colspan="2" |Date
|----
|width="20%"| Format:
| Date Day Date Time To=Ver/K
|----
|Purpose:
| Display/change date or time
|----
|Parameters:
| 
;Day: Day of the Week, 
;Date: Date in dd-mmm-yy format
;Time: Time in hh:mm[:ss] format
;To: Save to filename
|----
|Example:
| Date To=date.txt
|----
|}


{| class="wikitable" width="90%"
!colspan="2" |Delete
|----
|width="20%"| Format:
| Delete File/M/A ALL/S QUIET/S FORCE/S
|----
|Purpose:
| Delete files and/or directories.
|----
|Parameters:
| 
;Files: One or more files
;All: Delete all subfolders and files
;Quiet: No output
;Force: Ignore protection flags when deleting
|----
|Example:
| Delete OldFilesDir All
|----
|}


{| class="wikitable" width="90%"
!colspan="2" |Dir
|----
|width="20%"| Format:
| Dir Dir Opt/K ALL/S DIRS/S FILES/S INTER/S
|----
|Purpose:
| List contents of a directory
|----
|Parameters:
| 
;Dir: Directory
;Opt: Option
;Dirs: List directories
;Files: List Files
;Inter: Interactive mode.
|----
|Example:
| Dir S: Files
|----
|}


{| class="wikitable" width="90%"
!colspan="2" |Diskchange
|----
|width="20%"| Format:
| Diskchange Device/A
|----
|Purpose:
| Tell Dos that a disk has been swapped in a non-autosensing disk drive.
|----
|Parameters:
|
;Device: Name of removable device.
|----
|Example:
| Diskchange DU2:
|----
|}


{| class="wikitable" width="90%"
!colspan="2" |Echo
|
|----
|width="20%"| Format:
| Echo String/M NOLINE/S FIRST/K/N LEN/K/N TO/K
|----
|Purpose:
| Display text in a script or part of a string of text.
|----
|Parameters:
| 
;String: Text to display
;NoLine: Do not print a new line
;First: Position of first character
;Len: Length of substring 
;To: Destination file
|----
|Example:
| Echo "Enter your name: " NoLine
|----
|}


{| class="wikitable" width="90%"
!colspan="2" |Else
|----
|width="20%"| Format:
| Else
|----
|Purpose:
| Used with IF, if not true do these commands
|----
|Example:
| 
<code>
If Exists s:User-Startup
Else
Endif
</code>
|----
|}


{| class="wikitable" width="90%"
!colspan="2" |EndCLI
|----
|width="20%"| Format:
| EndCLI
|----
|Purpose:
| Close CLI console window
|----
|Example:
| EndCLI
|----
|}


{| class="wikitable" width="90%"
!colspan="2" |Endif
|----
|width="20%"| Format:
| Endif
|----
|Purpose:
| End a IF..ELSE..ENDIF block
|----
|Example:
| If $Age GT 65 
Else
Endif
|----
|}


{| class="wikitable" width="90%"
!colspan="2" |Endskip
|----
|width="20%"| Format:
| Endskip
|----
|Purpose:
| Stops a SKIP branch (for debugging)
|----
|Example:
| Endskip
|----
|}


{| class="wikitable" width="90%"
!colspan="2" |Eval
|----
|width="20%"| Format:
| Eval Value1/A Op Value2/M To/K LFormat/K
|----
|Purpose:
| Evaluate a simple arithmetic expression
|----
|Parameters:
| 
;Value1, Value2:  Values to evaluate (Decimal, Hex (0xn) or Octal (0nnn),
;Op: Operlexiaation (+,-,*,/,^,%),  
;To: File to save result,
;LFormat: Output format string (use *n to give a line feed).
|----
|Example:
| Eval $count + 1 to env:count
|----
|}


{| class="wikitable" width="90%"
!colspan="2" |Execute
|----
|width="20%"| Format:
| Execute File/A
|----
|Purpose:
| Execute a script or batch file
|----
|Parameters:
|
;File: Script file to execute
|----
|Example:
| Execute PCD
|----
|}


{| class="wikitable" width="90%"
!colspan="2" |Failat
|----
|width="20%"| Format:
| Failat RCLIM/A
|----
|Purpose:
| Change failure limit for scripts (0,5,10,20)
|----
|
| (0 - Ok, 5 - Warn, 10 - Error, 20 - Fail)
|----
|Parameters:
|
;RCLIM: Failat number (0-20)
|----
|Example:
| Failat 20
|----
|}


{| class="wikitable" width="90%"
!colspan="2" |Fault
|----
|width="20%"| Format:
| Fault Error/N/M
|----
|Purpose:
| Display error message from a code
|----
|Parameters:
|
;Error: One or more error numbers
|----
|Example:
| Fault 221
|----
|
| "Fault 221: Disk is full"
|----
|}


{| class="wikitable" width="90%"
!colspan="2" |FileNote
|----
|width="20%"| Format:
| Filenote File/A Comment ALL/S QUIET/S
|----
|Purpose:
| Attach a comment to a file (see LIST)
|----
|Parameters:
|
;File: File to add comment to
;Comment: Text to apply
;All: Apply to all files, 
;Quiet: No output
|----
|Example:
| FileNote List.txt "A list of people's names"
|----
|}


{| class="wikitable" width="90%"
!colspan="2" |Format
|----
|width="20%"| Format:
| Format Device Drive/K/A Name/K/A OFS/FFS/SFS 
|----
|
| DIRCACHE/S NODIRCACHE/S NOICONS/S QUICK/S
|----
|Purpose:
| Initialises AROS disks (in System drawer)
|----
|Parameters:
|
;Device|Drive: Disk device or name to format
;Name: New volume name
;OFS: Old Filing System
;FFS: Fast File System
;Intl|International: FFS International mode
;NoIntl|NoInternational: International mode off
;SFS: Smart Filesystem
;DirCache|NoDirCache: Directory caching on or off,
;NoIcons: No disk or trash icons
;Quick: Less thorough format
|----
|Example:
| format drive dh0: name AROS 
Format Drive DH2: Name Docs SFS NOICONS QUICK
|----
|}


{| class="wikitable" width="90%"
!colspan="2" |Get
|----
|width="20%"| Format:
| Get Name/A
|----
|Purpose:
| Returns contents of local env variable
|----
|Parameters:
|
;Name: Enviornment variable name
|----
|Example:
| Get RC
|----
|}


{| class="wikitable" width="90%"
!colspan="2" |Getenv
|----
|width="20%"| Format:
| Getenv Name/A
|----
|Purpose:
| Return contents of a global environment variable
|----
|Parameters:
|
;Name: Enviornment variable name
|----
|Example:
| Getenv Wanderer
|----
|}


{| class="wikitable" width="90%"
!colspan="2" |Iconx
|----
|width="20%"| Format:
| Iconx
|----
|Purpose:
| Enables a script to be run from Workbench. The script must have a Project .info file and
|----
|
| the Default Tool set to c:IconX to run it.
|----
|Example:
| Iconx
|----
|}


{| class="wikitable" width="90%"
!colspan="2" |If
|----
|width="20%"| Format:
| If NOT/S WARN/S ERROR/S FAIL/S EQ/K GT/K GE/K VAL/S EXISTS/K
|----
|Purpose:
| If condition is true execute following commands until an ELSE or ENDIF occurs.
|----
|Parameters:
| 
;Not: Reverse boolean result, 
;Warn: Test warn flag from previous command,
;Error: Test error flag from previous command, 
;Fail: Test fail flag from previous command,
;EQ:Equality test, 
;GT: Greater than test, 
;GE:Greater or equal test,
;VAL:Input is a number, 
;Exists: Test file exists.
|----
|Example:
| IF WARN, IF $count GT 10, IF EXISTS C:List
|----
|}


{| class="wikitable" width="90%"
!colspan="2" |Info
|----
|width="20%"| Format:
| Info Device
|----
|Purpose:
| Displays information about disks
|----
|Parameters:
|
;Device: Name of device to display
|----
|Example:
| Info DH0:
|----
|}


{| class="wikitable" width="90%"
!colspan="2" |Install
|----
|width="20%"| Format:
| Install Device/A NOBOOT/S CHECK/S FFS/S
|----
|Purpose:
| Saves a bootblock to a disk. If you have only one drive type INSTALL ? and
|----
|
| swap disks and then type DF0: and press RETURN to save bootblock.
|----
|Parameters:
|
;Device: Disk to install bootblock, 
;NoBoot: Erase bootblock, 
;Check: Test for bootblock,
|----
|
| FFS = Use Fast File System.
|----
|Example:
| Install DH0:
|----
|}


{| class="wikitable" width="90%"
!colspan="2" |IPrefs
|----
|width="20%"| Format:
| IPrefs
|----
|Purpose:
| Initialises preferences files on startup.
|----
|Example:
| IPrefs
|----
|}


{| class="wikitable" width="90%"
!colspan="2" |Join
|----
|width="20%"| Format:
| Join File/M/A AS=TO/K/A
|----
|Purpose:
| Join two or files together.
|----
|Parameters:
|
;File: File(s) to join together, 
;To|as: Destination file
|----
|Example:
| Join File1 File2 File3 as FileFull
|----
|}


{| class="wikitable" width="90%"
!colspan="2" |Lab
|----
|width="20%"| Format:
| Lab Label
|----
|Purpose:
| State a Label to Skip to in a script
|----
|Parameters:
|
;Label: Name of label
|----
|Example:
| Lab PROC2
|----
|}


{| class="wikitable" width="90%"
!colspan="2" |List
|----
|width="20%"| Format:
| List Dir/M P=PAT/K KEYS/S DATES/S NODATES/S To/K Sub/K Since/K Upto/K
|----
|
| QUICK/S BLOCK/S NOHEAD/S FILES/S DIRS/S LFORMAT/K ALL/S
|----
|Purpose:
| List file details in a directory.
|----
|Parameters:
| 
;Dir: One or more directory name(s)
;Keys: Display keys
;NoDates: Do not display dates
;To: Destination file
;Sub: Subdirectories included 
;Since: List files since date given
;Upto: List files upto given date 
;Quick: Simple directory list
;Block: List files in block sizes
;NoHead: Do not display header lines
;Files: Files only
;Dirs: Directorys only
;LFormat: Output list using this format string
;All: All files
|----
|Example:
| List Development: Block Dates Since=01-Jul-00
|----
|}


{| class="wikitable" width="90%"
!colspan="2" |Lock
|----
|width="20%"| Format:
| Lock Drive/A ON/S OFF/S Passkey
|----
|Purpose:
| Lock a device from writing.
|----
|Parameters:
| 
;Drive: Drive to lock
;On|Off: Turn lock on or off
;PassKey: Specify password.
|----
|Example:
| Lock DH1: On GHK459
|----
|}


{| class="wikitable" width="90%"
!colspan="2" |MakeDir
|----
|width="20%"| Format:
| Makedir Name/M
|----
|Purpose:
| Create one or more new directories.
|----
|Parameters:
| 
;Name: One or more directories to create.
|----
|Example:
| MakeDir DH1:Docs DH1:Basic DH0:TempFiles
|----
|}


{| class="wikitable" width="90%"
!colspan="2" |MakeLink
|----
|width="20%"| Format:
| MakeLink From/A To/A HARD/S FORCE/S
|----
|Purpose:
| Creates a logical link between files
|----
|Parameters:
| 
;From: Link file
;To: Actual file
;Hard: Hard link
;Force: Link to sub-directory
|----
|Example:
| MakeLink T C:Type Hard
|----
|}


{| class="wikitable" width="90%"
!colspan="2" |Mount
|----
|width="20%"| Format:
| Mount Device/M From/K
|----
|Purpose:
| Loads and mount a device
|----
|Parameters:
| 
;Device: Device to mount
;From: Mount file
|----
|Example:
| Mount DEVS:CD0
|----
|}


{| class="wikitable" width="90%"
!colspan="2" |NewShell
|----
|width="20%"| Format:
| NewShell Window From
|----
|Purpose:
| Open a new Shell console (CON) window
|----
|Parameters:
| 
;Window: Window config string
;From: Alternative script to Shell-Script.
|----
|Example:
| NewShell From S:Shell-Startup
|----
|}


{| class="wikitable" width="90%"
!colspan="2" |Path
|----
|width="20%"| Format:
| Path Path/M ADD/S SHOW/S RESET/S REMOVE/S QUIET/S
|----
|Purpose:
| Set or change the program search path
|----
|Parameters:
| 
;Path: Directory path to change
;Add: Add path
;Show: Display path,
;Reset: Clear path
;Remove: Remove entry from path
;Quiet: No output
|----
|Example:
| Path SC:C Add
|----
|}


{| class="wikitable" width="90%"
!colspan="2" |Prompt
|----
|width="20%"| Format:
| Prompt Prompt
|----
|Purpose:
| Change the prompt text (Codes: %R = last return code,
|----
|
| %S = Current path, %N = CLI Number)
|----
|Parameters:
| 
;Prompt: Path format
|----
|Example:
| Prompt "%N.%S> "
|----
|}


{| class="wikitable" width="90%"
!colspan="2" |Protect
|----
|width="20%"| Format:
| Protect File/A Flags ADD/S SUB/S ALL/S QUIET/S
|----
|Purpose:
| Change the 'rwedsp' flags of a file. (r=read,w=write, e=execute,d=delete,s=script,p=pure)
|----
|Parameters:
| 
;File: File to change
;Flags: One or more flags
;Add: Add flag(s) to existing flags
;Sub: Remove flags from file
;All: Change all files
;Quiet: No output
|----
|Example:
| Protect Editor rwed
|----
|}


{| class="wikitable" width="90%"
!colspan="2" |Quit
|----
|width="20%"| Format:
| Quit RC/N
|----
|Purpose:
| Quit a script with optional return code
|----
|Parameters:
| 
;RC: Return Code
|----
|Example:
| Quit 5
|----
|}


{| class="wikitable" width="90%"
!colspan="2" |Relabel
|----
|width="20%"| Format:
| Relabel Drive/A Name/A
|----
|Purpose:
| Change name of a disk
|----
|Parameters:
| 
;Drive: Disk to change
;Name: New volume name
|----
|Example:
| Relabel DH2: Documents
|----
|}


{| class="wikitable" width="90%"
!colspan="2" |Rename
|----
|width="20%"| Format:
| Rename From/A/M To=As/A QUIET/S
|----
|Purpose:
| Rename or move one or more files
|----
|Parameters:
| 
;From: Old filename
;To|As: New filename
;Quiet: No output
|----
|Example:
| Rename MyDoc as MyDoc.doc
|----
|}


{| class="wikitable" width="90%"
!colspan="2" |RequestChoice
|----
|width="20%"| Format:
| RequestChoice  Title/A Body/A Gadgets/M PubScreen/K
|----
|Purpose:
| Asks for input via a requester
|----
|Parameters:
| 
;Title: Title for dialog box
;Body: Text for dialog box
;Gadgets: List of buttons
;Pubscreen: Screen to use
|----
|Example:
| RequestChoice >ENV:RT "Format" "About to format your hard disk*nAre you sure?" "Go ahead" "No way!"
|----
|}


{| class="wikitable" width="90%"
!colspan="2" |RequestFile
|----
|width="20%"| Format:
| RequestFile Drawer File/K Pattern/K Title/K Positive/K Negative/K AcceptPattern/K RejectPattern/K
|----
|
| SAVEMODE/S MULTISELECT/S DRAWERSONLY/S NOICONS/S PUBSCREEN/K
|----
|Parameters:
| 
;Drawer: Initial drawer to use, 
;File: Initial file name, 
;Pattern: Use pattern as filter,
;Title: Title of dialog box, 
;Positive: Text for OK button, 
;Negative: Text for Cancel button,
;AcceptPattern: Defines file pattern(s) to show (overrides Pattern),
;RejectPattern: Pattern(s) of files to hide,
;SaveMode: Change colours to indicate Save or other mode,
;MultiSelect: Allow multiple file selection, 
;DrawersOnly: Display only directories,
;NoIcons: Suppress info files, 
;PubScreen: Screen to use.
|----
|Purpose:
| Asks for a filename via ASL file requester
|----
|Example:
| RequestFile >ENV:File Title "Select a File" Positive "Load" Noicons
|----
|}


{| class="wikitable" width="90%"
!colspan="2" |Resident
|----
|width="20%"| Format:
| Resident Name File REMOVE/S ADD/S REPLACE/S PURE=FORCE/S SYSTEM/S
|----
|Purpose:
| Stores AmigaDOS command in memory (quicker then reloading from disk each time it is executed).
|----
|
| To ensure a command can be made resident check the pure flag (see List).
|----
|Parameters:
| 
;Name|File: File to be made resident, 
;Remove: Remove file from resident list,
;Add: Add file to resident memory, 
;Pure|Force: Force a non-pure file to be resident,
;System: Show system's resident code segments.
|----
|Example:
| Resident C:Dir Pure
|----
|}


{| class="wikitable" width="90%"
! colspan="2" |Run
|----
|width="20%"| Format:
| Run Command/F
|----
|Purpose:
| Execute a program in the background (multi-task)
|----
|Parameters:
| 
;Command: Program to run
|----
|Example:
| Run DirectoryOpus > NIL:
|----
|}


{| class="wikitable" width="90%"
!colspan="2" |Search
|----
|width="20%"| Format:
| Search From/M Search/A ALL/S NONUM/S QUIET/S QUICK/S FILE/S PATTERN/S
|----
|Purpose:
| Search for a string in a file or a file on a disk
|----
|Parameters:
| 
;From: Directory to search from, 
;Search: Text to search for, 
;All: Search sub-directories,
;NoNum: Line numbers are not displayed, 
;Quiet: No Output, 
;Quick: Reduce output listing,
;File: Search a file rather than content, 
;Pattern: Search using a pattern.
|----
|Example:
| Search SYS: "List" File All
|----
|}


{| class="wikitable" width="90%"
!colspan="2" |Set
|----
|width="20%"| Format:
| Set Name String/F
|----
|Purpose:
| Sets or lists a local environment variable (local to current shell or current process)
|----
|Parameters:
| 
;Name: Variable name, 
;String: Text or number for variable
|----
|Example:
| Set MyName "Peter"
|----
|}


{| class="wikitable" width="90%"
!colspan="2" |SetClock
|----
|width="20%"| Format:
| Setclock LOAD/S SAVE/S RESET/S
|----
|Purpose:
| Load or set the date and time from battery-backed clock
|----
|Parameters:
| 
;Load: Load date from clock 
;Save: Save date and time to clock 
;Reset: Resets the click
|----
|Example:
| Date 27-Nov-00 10:00, SetClock Save
|----
|}


{| class="wikitable" width="90%"
!colspan="2" |SetDate
|----
|width="20%"| Format:
| Setdate File/A Weekday Date Time ALL/S
|----
|Purpose:
| Set date of a file or directory (see List)
|----
|Parameters:
| 
;File: File to change, 
;Weekday: Day of week, 
;Date: Date, 
;Time: Time, 
;All: All files
|----
|Example:
| Setdate DEVS: Monday 10:30
|----
|}


{| class="wikitable" width="90%"
!colspan="2" |Setenv
|----
|width="20%"| Format:
| Setenv Name String/F
|----
|Purpose:
| Change the contents of a environment variable
|----
|Parameters:
| 
;Name: Variable name 
;String: Text or number for variable
|----
|Example:
| Setenv Wanderer "44"
|----
|}


{| class="wikitable" width="90%"
!colspan="2" |SetKeyboard
|----
|width="20%"| Format:
| Setkeyboard Keymap/A
|----
|Purpose:
| Sets keyboard layout using layouts in Devs:Keymaps. You can use the Input preferences instead.
|----
|Parameters:
| 
;Keymap: Keymap file to use
|----
|Example:
| SetKeyboard USA0
|----
|}


{| class="wikitable" width="90%"
!colspan="2" |Skip
|----
|width="20%"| Format:
| Skip Label BACK/S
|----
|Purpose:
| Jump to a label in a script (see Lab). Use back if label occurs before Skip command.
|----
|Parameters:
| 
;Label: Label name to skip to, 
;Back: Go back in script to label
|----
|Example:
| Skip Lab2 Back
|----
|}


{| class="wikitable" width="90%"
!colspan="2" |Sort
|----
|width="20%"| Format:
| Sort From/A To/A Colstart/K CASE/S NUMERIC/S
|----
|Purpose:
| Sort a file and output to new file
|----
|Parameters:
| 
;From: File to sort, To = Output file, Colstart = Column to sort from,
|----
|
| 
;Case: Upper case entries are done first, 
;Numeric: Input treated as numbers.
|----
|Example:
| Sort Figures To SortedFigures Numeric
|----
|}


{| class="wikitable" width="90%"
!colspan="2" |Stack
|----
|width="20%"| Format:
| Stack Size/N
|----
|Purpose:
| Change/display amount of stack space in bytes.
|----
|Parameters:
| 
;Size: Stack size in bytes
|----
|Example:
| Stack 1000000
|----
|}


{| class="wikitable" width="90%"
!colspan="2" |Status
|----
|width="20%"| Format:
| Status Process/N FULL/S TCB/S CLI=ALL/S COM=COMMAND/K
|----
|Purpose:
| Display status of running programs. TCB is Task Control Block
|----
|Parameters:
| 
;Process: Task number 
;Full: Full output of process info
;TCB: Information except the command name 
;CLI|All: Command info only
;COM|Command: Search for command
|----
|Example:
| Status 2 Full
|----
|}


{| class="wikitable" width="90%"
!colspan="2" |Type
|----
|width="20%"| Format:
| Type From/A/M TO/K OPT H|N/K HEX/S NUMBER/S
|----
|Purpose:
| Display contents of text file on screen and binary files using HEX with optional line numbers.
|----
|Parameters:
| 
;From: Text file to display
;To: Output file or device
;Opt H | Hex: Display as hex values
;Opt N | Number: Number the lines.
|----
|Example:
| Type C:DIR HEX
|----
|}


{| class="wikitable" width="90%"
!colspan="2" |Unset
|----
|width="20%"| Format:
| Unset Name
|----
|Purpose:
| Remove a local env variable
|----
|Parameters:
| 
;Name: Environment variable name
|----
|Example:
| Unset MyName
|----
|}


{| class="wikitable" width="90%"
!colspan="2" |Unsetenv
|----
|width="20%"| Format:
| Unsetenv Name
|----
|Purpose:
| Remove a global env variable
|----
|Parameters:
| 
;Name: Environment variable name
|----
|Example:
| Unsetenv Wanderer
|----
|}


{| class="wikitable" width="90%"
!colspan="2" |Unalias
|----
|width="20%"| Format:
| Unalias Name
|----
|Purpose:
| Remove a short name for a command
|----
|Parameters:
| 
;Name: Alias name
|----
|Example:
| UnAlias MyDir
|----
|}


{| class="wikitable" width="90%"
!colspan="2" |Version
|----
|width="20%"| Format:
| Version Name Version/N Revision/N FILE/S FULL/S Unit/N INTERNAL/S RES/S
|----
|Purpose:
| Display workbench, library or device version information.
|----
|Parameters:
| 
;Name:  File
;Version: Print Kickstart or Workbench number and sets env variables and sets Warn flag
;Revision: As Version but for Revision numer, File = Check file rather than memory
|----
|
| 
;Full: Display full information, 
;Internal: Check internal files, 
;Res: Check resident files.
|----
|Example:
| Version kickstart Version=39 Revision=106
|----
|}


{| class="wikitable" width="90%"
!colspan="2" |Wait
|----
|width="20%"| Format:
| Wait Time/N SEC=SECS/S MIN=MINS/S UNTIL/K
|----
|Purpose:
| Wait for a specified period of time
|----
|Parameters:
| 
;Time: Time period in either Sec (Seconds) or Mins (Minutes) 
;Until: Wait until a time
|----
|Example:
| Wait Until 12:00
|----
|}


{| class="wikitable" width="90%"
!colspan="2" |Which
|----
|width="20%"| Format:
| Which File/A NORES/S RES/S ALL/S
|----
|Purpose:
| Find where a file is in command path (see Path) and sets Warn flag.
|----
|Parameters:
| 
;File: File to locate
;NoRes: Resident list is not searched
;Res: Only the resident list is searched
;All: Search full path
|----
|Example:
| Which Multiview
|----
|}


{| class="wikitable" width="90%"
!colspan="2" |Why
|----
|width="20%"| Format:
| Why
|----
|Purpose:
| Display reason why a previous command failed
|----
|Example:
| Why
|----
|}

===Additional DOS commands===


<pre>
DMS
Format:
 DMS Read file[.DMS] [FROM dev:] [TEXT filetext] [CMODE mode] [LOW lowtrack] [HIGH hightrack] [NOVAL] [NOZERO] [ENCRYPT password]
 DMS Write file[.DMS],,, [TO dev:] [LOW lowtrack] [HIGH hightrack] [NOVAL] [NOTEXT] [NOPAUSE [DECRYPT password]
 DMS Repack file[.DMS] [TO dev:] [LOW lowtrack] [HIGH hightrack] [CMODE mode]
 DMS View file[.DMS],,, [FULL] DMS Text file[.DMS],,,
 DMS Test file[.DMS],,, DMS Help
Purpose:  To read, write or view Disk Masher disk images of floppy disks.
Example: DMS Write MyDisk.DMS FROM DF0:

Installer
Format:  Installer [SCRIPT] filename <[APPNAME] name> <[MINIUSER] level> <[DEFUSER] default> <[LOGFILE] 
 logname> <[LANGUAGE] language> <NOPRETEND> <NOLOG> <NOPRINT>
Purpose: To install an application via a installer script. Usually provided as a default tool for script 
 files in icon.
Example: Installer SCRIPT InstallApp APPNAME MyProgram LOGFILE DH0:MyProgram.log

LHA
Format:  LHA [-options] <command> <archive[.LZH|LHA]> [[homedir] <filespec...] [@file] [destination]
Purpose: To create, modify or list LHA or LZH files
Examples:
LHA a pictures.lha #?.jpg (archives all jpg files into pictures.lha)
LHA l pictures.lha        (lists all files in pictures.lha)
LHA x pictures.lha        (extracts all files from pictures.lha)

LZX
Format:  LZX [-options] <command> <archive> [<file> ...] [<destdir>]
Purpose: To create, modify or list LZX archive files.
Examples:
LZX a documents.lzx #?.doc (archives all doc files into documents.lzx)
LZX l documents.lzx        (lists all files in documents.lzx)
LZX x documents.lzx        (extracts all files from documents.lzx)

Additional DOS Information

Clear Screen
Example: Echo "*E[0;0H*E[J"
Purpose: Clears the screen. Uses printer commands to control text formatting in CLI, so *E is equivalent to ESC character.The command clear is normally defined using an Alias or an AmigaDOS script in S: folder.

Text in Italics
Example: Echo "*E[3mItalics*E[23m"
Purpose: *E[3m turns on italics and *E[23m turns off italics

Text in Bold
Example: Echo "*E[1mBold*E[22m"
Purpose: *E[1m turns on bold, and *E[22m turns off bold.

Underline Text
Example: Echo "*E[4mUnderline*E[24m"
Purpose: *E[4m turns on underline, and *E24m turns off underline.

Coloured Text
Example: Echo "*E[32mRed Text*E[0m"
Purpose: *E[nm where n=30-39 for foreground color or n=40-49 for background colour.
*E[0m resets to normal character set.

Seems that Amiga shell allows an escape sequence to begin with just the 0x9B character, OR it allows the more traditional 0x1B character (033 in octal) followed the [ character. For sake of clarity, I will represent it by the C string \033[

AROS does not understand the \033[0m sequence, therefore you need to reset it using another colour sequence (on the assumption that the user has not changed the default Shell colours). This turns out to be \033[31;40m . It makes sense to play it safe, and follow it by the (ignored on AROS) \033[0m sequence.

Therefore my final highlight code looks like this:

printf("Before\033[32;43mDuring\033[31;40m\033[0mAfter\n");

Or if you code in E (like me) then it is this:

PrintF('Before\e[32;43mDuring\e[31;40m\e[0mAfter\n')

DOS commands only present in AROS

AddAudioModes
Format:
Purpose:
Parameters: Files/M Quiet/S Refresh/S Remove/S DblScan/S
Example:
Beep
Format:
Purpose:
Parameters:
Example:
CheckMem
Format:
Purpose:
Parameters:
Example:
Delay
Format:
Purpose:
Parameters: Time/N Tick=Ticks/S
Example:
DevList
Format: DevList
Purpose: gives a list of devices running - address, version, revision, opencnt, flags, name
Parameters:
Example: devlist
LibList
Format: LibList
Purpose: gives address, version, revision, opencnt, flags, name of open libraries and mui
Parameters:
Example: liblist
Reboot
Format: Reboot
Purpose: warm reboots machine - not functioning
Parameters:
Example:
ResList
Format: reslist
Purpose: gives a list of resources - name and address
Parameters:
Example: reslist
Shutdown
Format: shutdown
Purpose: power off computer
Parameters:
Example: not functioning
TaskList
Format: tasklist
Purpose: gives a list of tasks running - address, type, priority, state, cpu, time, stack, used, name
Parameters:
Example: tasklist
}

Examples

Is there a way to unzip more say 10 zipped archived at a time

list #?.zip lformat "unzip %N" >script
execute script

Resident >NIL: C:RequestChoice PURE
Resident >NIL: C:RequestFile PURE

; $VER: DMSMaker v1.0 (11.7.96) Richard Burke

lab Start
if EXISTS ENV:Choice
        delete ENV:Choice >NIL:
endif

if EXISTS ENV:Tst
        delete ENV:Tst >NIL:
endif

if EXISTS ENV:V
        delete ENV:V >NIL:
endif

if EXISTS ENV:Re
        delete ENV:Re >NIL:
endif

if EXISTS ENV:DMS
        delete ENV:DMS >NIL:
endif

if EXISTS ENV:De
        delete ENV:De >NIL:
endif

if EXISTS ENV:DeDev
        delete ENV:DeVol >NIL:
endif

if EXISTS ENV:Cr
        delete ENV:Cr >NIL:
endif

if EXISTS ENV:CrSv
        delete ENV:CrSv  >NIL:
endif

if EXISTS ENV:Mode
        delete ENV:Mode >NIL:
endif

if EXISTS ENV:Mode1
        delete ENV:Mode1 >NIL:
endif

which DMS all >ENV:DMS

RequestChoice >ENV:Choice "Welcome!" "Welcome to the DMSMaker! Choose an action" "Crunch" "Decrunch" "Repack" "View" "Test" "Quit"

if $Choice EQ 1
        lab Dev
        RequestFile >ENV:Cr DRAWERSONLY TITLE "Choose DEVICE to crunch" POSITIVE "Crunch" NEGATIVE "Return to menu"
                if WARN
                        skip Start BACK
                endif
                if NOT EXISTS $Cr
                        echo "DEVICE does not exist! Choose again!"
                        skip Dev BACK
                endif
        RequestChoice >ENV:Mode1 "Crunch Mode" "Choose degree of crunching" "Best" "None" "Heavy1" "Heavy2" "Return to menu"
                if WARN
                        skip Start BACK
                endif
                if $Mode1 EQ 1
                        echo "BEST" >ENV:Mode
                endif
                if $Mode1 EQ 2
                        echo "NONE" >ENV:Mode
                endif
                if $Mode1 EQ 3
                        echo "HEAVY1" >ENV:Mode
                endif
                if $Mode1 EQ 4
                        echo "HEAVY2" >ENV:Mode
                endif
        RequestFile >ENV:CrSv TITLE "Save crunched file as..." ACCEPTPATTERN "#?.dms" FILE ".dms" POSITIVE "Save" NEGATIVE "Return to menu"
                if WARN
                        skip Start BACK
                endif
        $DMS read $CrSv FROM $Cr CMODE $Mode
        echo "File crunched!"
endif

if $Choice EQ 2
        lab Dec
        RequestFile >ENV:De TITLE "Choose FILE to decrunch" ACCEPTPATTERN "#?.dms" POSITIVE "Decrunch" NEGATIVE "Return to menu"
                if WARN
                        skip Start BACK
                endif
                if NOT EXISTS $De
                        echo "FILE does not exist! Choose again!"
                        skip Dec BACK
                endif
        lab DecDev
        RequestFile >ENV:DeDev TITLE "Choose DEVICE to decrunch TO" DRAWERSONLY POSITIVE "Write" NEGATIVE "Return to menu"
                if WARN
                        skip Start BACK
                endif
                if NOT EXISTS $DeDev
                        echo "DEVICE does not exist! Choose again!"
                        skip DecDev BACK
                endif
        $DMS write $De TO $DeDev
        echo "File decrunched!"
endif

if $Choice EQ 3
        lab Rep
        RequestFile >ENV:Re TITLE "Choose FILE to repack" ACCEPTPATTERN "#?.dms" POSITIVE "Repack" NEGATIVE "Return to menu" FILE ".dms"
                if WARN
                        skip Start BACK
                endif
                if NOT EXISTS $Re
                        echo "File does not exist! Choose again!"
                        skip Rep BACK
                endif
        RequestChoice >ENV:Mode1 "Crunch Mode" "Choose degree of crunching" "Best" "None" "Heavy1" "Heavy2" "Return to menu"
                if WARN
                        skip Start BACK
                endif
                if $Mode1 EQ 1
                        echo "BEST" >ENV:Mode
                endif
                if $Mode1 EQ 2
                        echo "NONE" >ENV:Mode
                endif
                if $Mode1 EQ 3
                        echo "HEAVY1" >ENV:Mode
                endif
                if $Mode1 EQ 4
                        echo "HEAVY2" >ENV:Mode
                endif
        RequestFile >ENV:CrSv TITLE "Save repacked file as..." ACCEPTPATTERN "#?.dms" FILE ".dms" POSITIVE "Save" NEGATIVE "Return to menu"
                if WARN
                        skip Start BACK
                endif
        $DMS repack $Re TO $CrSv CMODE $Mode
        echo "File repacked!"
endif

if $Choice EQ 4
        lab View
        RequestFile >ENV:V TITLE "Choose DMS FILE to view" POSITIVE "View" NEGATIVE "Return to menu" ACCEPTPATTERN "#?.dms" FILE ".dms"
                if WARN
                        skip Start BACK
                endif
                if NOT EXISTS $V
                        echo "FILE does not exist! Choose again!"
                        skip View BACK
                endif
                $DMS view $V
endif

if $Choice EQ 5
        lab Test
        RequestFile >ENV:Tst TITLE "Choose FILE to test" ACCEPTPATTERN "#?.DMS" POSITIVE "Test" NEGATIVE "Return to menu" FILE ".dms"
                if WARN
                        skip Start BACK
                endif
                if NOT EXISTS $Tst
                        echo "FILE does not exist! Choose again!"
                        skip Test BACK
                endif
                $DMS test $Tst
endif

if $Choice EQ 0
        skip End
endif

skip Start BACK

lab End
quit
resident >nil: c:search PURE
resident >nil: c:requestfile PURE
resident >nil: c:requestchoice PURE
resident >nil: c:echo PURE
resident >nil: c:copy PURE
resident >nil: c:type PURE

; $VER: HappySearch v1.0 (25.4.97) Richard Burke

requestchoice >env:int "HappySearch" "HappySearch searches the specified device/drawer*nto see if any files have been infected with the*n'Happy New Year 96!' virus, and informs of any*ninfected files it finds. Such files will have the*nvirus name printed below them in the scanned file*nlisting." "Okay" "Quit"
if $int EQ 0
        quit
endif

lab beg
if exists env:mo
        delete >nil: env:mo
endif

if exists env:disp
        delete >nil: env:disp
endif

if exists env:dev
        delete >nil: env:dev
endif

if exists env:hap
        delete >nil: env:hap
endif

if exists env:sav1
        delete >nil: env:sav1
endif

if exists env:rec
        delete >nil: env:rec
endif

if exists env:sav
        delete >nil: env:sav
endif

if exists env:int
        delete >nil: env:int
endif

requestfile >env:dev TITLE "Choose drawer to search:" POSITIVE Search DRAWERSONLY
if warn
        quit
endif

requestchoice >env:disp "Save?" "Results will be printed to screen.*nSave results to file too?*n(This is recommended)" "Yes" "No"
if $disp EQ 1
        requestfile >env:sav TITLE "Location:" POSITIVE Save DRAWER RAM: FILE Happy.tmp
        echo $sav >env:sav1
endif

requestchoice >env:rec "Recurse?" "Search sub-directories recursively?" "Yes" "No"
if $rec EQ 1
        echo "Scanning files . . ."
        search $dev "Happy New Year 96!" ALL >env:hap
else
        echo "Scanning files . . ."
        search $dev "Happy New Year 96!" >env:hap
endif
echo "Files scanned:"
type env:hap
if $disp EQ 0
        delete >nil: env:hap
else
        copy >nil: env:hap $sav1
        echo "File listing saved as *e[33m$sav1*e[0m"
endif

requestchoice >env:mo "More?" "Scan another drawer?" "Yes" "No"
if $mo EQ 1
        skip beg back
endif
if exists env:mo
        delete >nil: env:mo
endif

if exists env:disp
        delete >nil: env:disp
endif

if exists env:dev
        delete >nil: env:dev
endif

if exists env:hap
        delete >nil: env:hap
endif

if exists env:sav1
        delete >nil: env:sav1
endif

if exists env:rec
        delete >nil: env:rec
endif

if exists env:sav
        delete >nil: env:sav
endif

if exists env:int
        delete >nil: env:int
endif

quit
This article is issued from Wikibooks. The text is licensed under Creative Commons - Attribution - Sharealike. Additional terms may apply for the media files.