MicroSoft's Undocumented Features

 


Ä Area: [ECHO] BATCH POWER PROG. ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ

  Msg#: 4967                                         Date: 09-12-93  20:18

  From: Gary Cooper                                  Read: Yes    Replied: No 

    To: ALL                                          Mark:                     

  Subj: MUF Ver. 1.6 #1

ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ

                                 The


                               Fabulous


       ####       ####        ###    ###         ##########

       #####     #####        ###    ###         ##########

       ### ##   ## ###        ###    ###         ###

       ###  ## ##  ###        ###    ###         ########

       ###   ###   ###        ###    ###         ########  

       ###    #    ###        ###    ###         ###

       ###         ###        ###    ###         ###

       ###         ###  ##    ##########   ##    ###     ##

       ###         ###  ##     ########    ##    ###     ##


                                 List 


                  (MicroSoft's Undocumented Features)


                          Volume 1  Number 6


===============================================================================


1)  TRUENAME


    Internal DOS 5.0 command.  Canonicalize a filename or path (using

    DOS interrupt 21h, function 60) prints the actual directory.


    SYNTAX


    TRUENAME filename      prints the complete path to file


    TRUENAME directory     prints the complete path to directory


    Note: If the path is in a network, it starts with a \\machine-name


                              Michael Larsson



    TRUENAME is analogous to the "whence" command in the UNIX Korn

    shell.  It returns the real fully qualified pathname for a command.


    TRUENAME is useful in networks, where a physical drive may be mapped

    to a logical volume, and the user needs to know the physical location

    of the file.  It ignores the DOS SUBST, and JOIN commands, or network

    MAPped drives.


    It is an undocumented MS/DOS feature, but is documented in 4DOS as

    follows:


    SYNTAX        (Internal DOS 5.0 / 4DOS)

 

    TRUENAME [d:][path]filename


    PURPOSE


    Returns a fully qualified filename.


    COMMENTS


    TRUENAME will see "through" JOIN and SUBST commands, and requires

    MS-DOS 3.0 or above.


    EXAMPLE


    The following command uses TRUENAME to get the true pathname for a

    file:


    c:\> subst d: c:\util\test

    c:\> truename d:\test.exe


    c:\util\test\test.exe


                              Dennis McCunney


    TRUENAME : will reveal the full name drive and path of the filename.

    If you specify a wildcard ('*') in the filename, it will expand

    the filename to use question marks instead. If the path includes

    the ..\ sequence, TRUENAME will examine the directory structure and

    calculate the path.  Stranger still, the line:


        TRUENAME \CRONK\FLIBBET\..\ART

        produces the response:

        C:\CRONK\ART


    even if the directories \CRONK\FLIBBET and the file ART don't exist!

    Don't expect this command to work across networks.


                              PC Magazine #212 Pg. 48-49

                              Forwarded by:

                              Rodney Atkins


===============================================================================

 

... A feature is a bug with seniority.

___ Blue Wave/QWK v2.12


-!- EzyQwk V1.02

 ! Origin: Programmer's Corner BBS, Saint John, NB  (v32/v42) (1:255/6)


Ä Area: [ECHO] BATCH POWER PROG. ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ

  Msg#: 4968                                         Date: 09-12-93  20:19

  From: Gary Cooper                                  Read: Yes    Replied: No 

    To: ALL                                          Mark:                     

  Subj: MUF Ver. 1.6 #2

ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ

2)  FDISK /STATUS ?


    Prints a screen just like using option 4 of fdisk "Partition

    information", but includes extended partition information.

    Nice if you want to get an overview without fear of pressing

    the wrong keys.

                              Armin Hanisch


    Doesn't work in Ver 3.30.


                              Mitch Ames


    FDISK /MBR


    MS-DOS 5.0 FDISK has an undocumented parameter, /MBR, that causes it

    to write the master boot record to the hard disk without altering the

    partition table information. While this feature is not documented, it

    can be told to customers on a need-to-know basis.


    What is the MBR?

 

    At the end of the ROM BIOS bootstrap routine, the BIOS will read and

    execute the first physical sector of the first floppy or hard drive on

    the system. This first sector of the hard disk is called the master

    boot record, or sometimes the partition table or master boot block. At

    the beginning of this sector of the hard disk is a small program. At

    the end of this sector is where the partition information, or

    partition table, is stored. This program uses the partition

    information to determine which partition is bootable (usually the

    first primary DOS partition) and attempts to boot from it.


    This program is what is written to the disk by FDISK /MBR and is

    usually called the master boot record.  During normal operation,

    FDISK only writes this program to the disk if there is no master

    boot record.


    Why is the MBR changed during Setup?


    During installation of Microsoft MS-DOS 5 Upgrade, Setup will replace

    the master boot record on the hard disk with code to display the

    message:


       The MS-DOS 5.0 Setup was not completed.

       Insert the UNINSTALL #1 diskette in drive A.

       Press the ENTER key to continue.


    This message should be erased and the master boot code rewritten

    before Setup is completed. If a problem occurs during Setup and you

    return to the previous MS-DOS, UNINSTAL should also remove this

    message. However, should Setup or UNINSTAL fail to remove this

    message, or should the master boot record become corrupted, a new

    master boot record can be written to the disk using the following

    command:


        C:\>fdisk /mbr


    Warning:  Writing the master boot record to the hard disk in this

    manner can make certain hard disks unusable.  IE: those partitioned

    with SpeedStor, or Microhouse's DrivePro program.  It can also cause

    problems for some dual-boot programs, or for disks with more than 4

    partitions.  Specific information is below.


    WARNINGS:


    This option should not be used if:


       - the disk was partitioned using Storage Dimensions' SpeedStor

         utility with its /Bootall option

       - the disk was partitioned using MicroHouse's DrivePro program AND

         the drive was NOT setup using a standard CMOS value.

       - more than 4 partitions exist

       - certain dual-boot programs are in use


    Storage Dimensions' SpeedStor utility using the /Bootall option

    redefines the drive's physical parameters (cylinder, head, sector).

    /BOOTALL stores information on how the drive has been changed in an

    area of the master boot record that MS-DOS does not use. FDISK /MBR

    will erase that information, making the disk unusable.


    MicroHouse's DrivePro program functions similarly to SpeedStor above, 

    and has the same boot record vulnerability.  MicroHouse identifies their

    boot program at boot-up by a small MICROHOUSE logo near the left side of

    the screen about two-thirds down, at power on.  If you see this logo, 

    do NOT use FDISK /MBR, or the drive will become unusable.


    Some older OEM versions of MS-DOS and some third-party partitioning

    utilities can create more than 4 partitions.  Additional partition

    information is commonly stored information on partitions in an area

    that FDISK /MBR will overwrite.


    Some dual-boot programs have a special MBR that asks the user which

    operating system they want on bootup.  FDISK /MBR erases this program.

    Dual-boot systems that boot whichever partition is marked Active are

    not affected by FDISK /MBR.


                              Edited: MicroSoft Publication

                              forwarded by Don Dean

                              editing suggestions made by

                              Matt Mc_Carthy (info re:

                              MicroHouse's DrivePro)

 

... BUG (n.) An undocumented feature   FEATURE (n.) A documented bug.

___ Blue Wave/QWK v2.12


-!- EzyQwk V1.02

 ! Origin: Programmer's Corner BBS, Saint John, NB  (v32/v42) (1:255/6)


Ä Area: [ECHO] BATCH POWER PROG. ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ

  Msg#: 4969                                         Date: 09-12-93  20:21

  From: Gary Cooper                                  Read: Yes    Replied: No 

    To: ALL                                          Mark:                     

  Subj: MUF Ver. 1.6 #3

ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ

2)  FDISK /MBR (Continued)


    If you have a Boot Sector Virus, just boot from a known "clean"

    floppy disk (which has the System files and FDISK on it - IE:

    your "disaster recovery disk") and run FDISK /MBR.  Bye, Bye Virus!


                              Gary Cooper


    Make sure it's write protected ..


                              Jasen Betts



    [Begin quote]


    One of the FDISK functions, updating the Master Boot Record (MBR),

    does not appear on any of the FDISK menus. The Master Boot Record is

    located at the beginning of your primary fixed disk. It is composed of

    two parts -- the master boot code and the partition table. The master

    boot code is a short program that determines which operating system

    will start the computer, then transfers control to that operating system.

    The partition table contains information about the partitions located on

    the fixed disk.


    The Master Boot Record may need to be updated when:


    * An operating system other than MS-DOS is on the fixed disk.

      Some operating systems replace the master boot code with their

      own program, which may not allow MS-DOS to start the system,

      even if the partitions are valid DOS partitions. If this condition

      exists, updating the Master Boot Record will replace only the master

      boot code.


    * The information at the beginning of the fixed disk has been

      overwritten. The partition information is destroyed and the fixed

      disk will no longer start any operating system. If this condition

      exists, updating the Master Boot Record will replace both the master

      boot code and the partition table. However, the partition table will

      not have any defined partitions.


    If you cannot get your system to start MS-DOS from the fixed disk and

    you are sure the initialization process was performed correctly, you

    may need to update the Master Boot Record. To do this, enter the

    following command:


         FDISK /MBR


    FDISK does not display any menus or messages while it is updating the

    Master Boot Record. When the procedure is complete, the MS-DOS

    prompt is displayed.


    If you are unable to start MS-DOS from the fixed disk after updating

    the Master Boot Record, you may need to partition and format your fixed

    disk. If you still cannot use the fixed disk to start MS-DOS, contact

    your Authorized COMPAQ Computer Dealer for further assistance.


    [End quote]

                              Compaq DOS 4.01 Manual

                              Submitted by

                              Paul Maserang


    If the situation at hand involved a trashed partition table. This

    regenerates the partition table, but does NOT restore the user

    partition information in it. Therefore, after using FDISK /MBR, you

    must still use FDISK without the /MBR switch to re-enter the partition

    information before you can do anything else. If the newly entered

    partition information is identical to that which existed there prior

    to the partition table being trashed, and nothing else has been damaged,

    there should be no need to reformat the drive, because the boot sector,

    FATs, directories, and data should still be undisturbed. If the boot

    sector or either of the two hidden system files (IBMBIO.COM/IBMDOS.COM 

    or IO.SYS/MSDOS.SYS) are damaged, the SYS command can be used to restore

    them without losing anything else.


                              Paul Maserang

 

... Its not a bug, its an undocumented feature.

___ Blue Wave/QWK v2.12


-!- EzyQwk V1.02

 ! Origin: Programmer's Corner BBS, Saint John, NB  (v32/v42) (1:255/6)


Ä Area: [ECHO] BATCH POWER PROG. ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ

  Msg#: 4970                                         Date: 09-12-93  20:23

  From: Gary Cooper                                  Read: Yes    Replied: No 

    To: ALL                                          Mark:                     

  Subj: MUF Ver. 1.6 #4

ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ

2)  FDISK /MBR (Concluded)


    Paul, I work _only_ with the Microsoft versions, and have not had the

    same experience.  The /MBR parameter _only_ rewrites the MBR.  It does

    not affect the partition information.  I use it daily on various

    machines and have not lost one byte of data.


                              Matt Mc_carthy


    I guess you didn't know that "Master Boot Record" and "Partition Table"

    refer to the same thing.  What you're talking about is the master boot

    CODE, the executable code that accompanies the partition table and is

    located on the same physical sector (0).


    Here's what I find in the first few bytes of my physical sector 0

    (unassembled with DEBUG after copying the sector to a file):


    2BB7:0100 33C0            XOR     AX,AX

    2BB7:0102 FA              CLI

    2BB7:0103 BED0            MOV     SS,AX

    2BB7:0105 BC007C          MOV     SP,7C00

    2BB7:0108 BEC0            MOV     ES,AX

    2BB7:010A BED8            MOV     DS,AX

    2BB7:010C FB              STI

    2BB7:010D 8BF4            MOV     SI,SP

    2BB7:010F BF0006          MOV     DI,0600

    2BB7:0112 B90002          MOV     CX,0200

    2BB7:0115 FC              CLD

    2BB7:0116 F3              REPZ

    2BB7:0117 A4              MOVSB

    2BB7:0118 EA1D060000      JMP     0000:061D


    I also find the following text in the first half of the sector:


        Missing operating system.Error loading operating system.Invalid

        partition table.Author - Siegmar Schmidt


    I have only one partition on my C: drive, and its information is in

    the last of four possible positions in the partition table. The first

    significant byte (non-zero) is at offset 01EEh in physical sector 0.

    The rest, from offset 00EDh to 01EDh is nothing but 00h.


    So it would appear that everything from offset 0000h to 00ECh is the

    Master Boot CODE, and everything from 00EDh to the end of the sector

    (01FFh) is the Master Boot RECORD (aka partition table). More likely,

    the partition table probably begins at offset 0100h, and takes up the

    last 256 of the 512 bytes available in the sector.


    Beginning with the first significant byte of my partition table (at

    offset 01EEh), this is what mine shows:


       80 01 01 04 03 91 65 11 00 00 00 07 A3 00 00 55 AA

       ^^

    This first byte, I think, is the drive on which this partition

    is located, and the next byte might indicate that this is the

    first (primary) partition (in my case, the ONLY partition for

    this drive).


    Now, according to my manual, FDISK /MBR can either re-write only

    the Master Boot CODE when necessary; or it can re-write both the

    Master Boot Code AND the Master Boot RECORD, if it determines that

    the partition table has been corrupted.


    If it does re-write both, then you do have to use FDISK without

    the /MBR switch after using it with the switch, because the

    re-written partition table has no defined partitions until you do.

    But when you use the /MBR switch, it produces no screen output

    (at least not on the version I'm using), so you don't know whether

    it did both or just the code. So you should still check to see that

    you have a valid partition by using FDISK without the /MBR switch

    afterwards.


                              Paul Maserang

===============================================================================

 

... Life has a lot of undocumented features!

___ Blue Wave/QWK v2.12


-!- EzyQwk V1.02

 ! Origin: Programmer's Corner BBS, Saint John, NB  (v32/v42) (1:255/6)


Ä Area: [ECHO] BATCH POWER PROG. ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ

  Msg#: 4971                                         Date: 09-12-93  20:24

  From: Gary Cooper                                  Read: Yes    Replied: No 

    To: ALL                                          Mark:                     

  Subj: MUF Ver. 1.6 #5

ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ

3)  SHELL=C:\COMMAND.COM /E:1024 /F /P


    The /F in your Config.sys SHELL= statement is another undocumented

    feature.


    It forces a "Fail" response to the "Abort, Retry, Fail" prompt issued

    by the DOS critical error handler.


                              Dennis McCunney


    The /F switch on the SHELL command in CONFIG.SYS will not work in

    a DESQview environment. The only thing I have found that will is a

    program called FATAL.COM.


                              Bruce Bowman


    COMMAND /F


    Makes all those annoying "Abort, Retry, Ignore, Fail?"

    disk error messages default to "Fail".


                              Erik Ratcliffe


    For DOS 3.30 (somebody might care to check these for other versions):


    COMMAND /P


       Docs say that this doesn't allow you to exit back to the

       previous shell (ie /Permanent), but /P also forces

       \autoexec.bat to be run on secondary shells.


    COMMAND /D


       (When used with a primary shell, or secondary with /P)

       prevents execution of \autoexec.bat


                              Mitch Ames


    I just checked, and these also both apply to DOS 5.00


                              Mitch Ames


===============================================================================

4)  VER/R


    Yields extended information about the OS Version.  IE:


    MS-DOS Version 5.00

    Revision A

    DOS is in HMA


                              Billy Gilbreath


    Doesn't work with DOS 3.30


                              Mitch Ames


===============================================================================

5)  ECHO OFF     from the command line erases the prompt and leaves

                 just a cursor on the screen.


    ECHO ON      from the command line restores the prompt.

 

    This works with all version of DOS (tested so far!).


                              Michael Larsson


    One of the most frequently asked questions in the BatPower echo

    is "How do I ECHO a blank line?"  The most common answer is "ECHO."

    However, I have captured a few posts which expand on the

    possible answers to this request:


                              Editor's Note


    ECHO"


                              Paul Welsh


    just about any white space character will work. 


                              Alan Newbery


    I just found out myself that any delimiter will work here

    (ECHO. ECHO" ECHO, ECHO: ECHO; ECHO[ ECHO] etc.).  Apparently

    it's just the way that the command handles the delimiter and

    has been available from way back.  Microsoft just began

    mentioning it in the documentation recently, though, and their

    examples use a period.


                              John Whitfield

===============================================================================

 

... _My_ software never has bugs.  It just develops random features...

___ Blue Wave/QWK v2.12


-!- EzyQwk V1.02

 ! Origin: Programmer's Corner BBS, Saint John, NB  (v32/v42) (1:255/6)


Ä Area: [ECHO] BATCH POWER PROG. ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ

  Msg#: 4972                                         Date: 09-12-93  20:26

  From: Gary Cooper                                  Read: Yes    Replied: No 

    To: ALL                                          Mark:                     

  Subj: MUF Ver. 1.6 #6

ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ

6)  FORMAT


    FORMAT /H


        In DOS 3.30 (I don't know about other versions), FORMAT /H

        will cause the format to begin immediately after pressing Y

        in response to "Format another?", rather than displaying

        "Place disk to be formatted in drive A: and press Enter" on

        a second and subsequent disks.


                              Mitch Ames


        On 5.0 it comes back as "invalid switch".


                              John Mudge


    FORMAT A: /AUTOTEST


        The autotest parameter will allow format to proceed, checking

        existing format (unless the /u parameter is also present) and

        proceeding with the format.


        All this will take place with no delay and no waiting for user

        input.  It will also end without pausing.  It will not ask for

        a volume label or whether to format another diskette.


        WARNING!  This procedure will also work on hard drives!  Be very

        cautious if you plan to use this feature.


                              Wayne Woodman


        Problem is that it won't take any other switches like /U, /S or

        /Q which is a bit of a shame really.


                              Peter Lovell


        With Dos 5 it certainly takes /u and /s as I have used it, in

        fact I think /u is required if the disk is not pre-formatted as

        the drive hangs up otherwise.


        I would agree about /q though, this does not work and gives the

        error message you quote.


                              Terry Kreft



        FORMAT/U is not available in DOS 3.30


                              Mitch Ames


    FORMAT C: /BACKUP


        This week I've read some articles in Dutch computer magazines about

        MUF's which are very interesting (if you don't already know about

        them).


        I already knew the FORMAT option /AUTOTEST, but new to me was the

        /BACKUP option.


        EXAMPLE: FORMAT A: /BACKUP


        It seems to work exactly like /AUTOTEST, but it DOES ask for a

        volume label.

                              Willem Van.den.broek

  

    FORMAT/SELECT


        is like DOS-Mirror  ... for safety-fanatics only


    FORMAT/SELECT/U


        makes disks unreadable (remember the U)


                              Reinhard Kujawa

                              Info from The German magazine PC PRAXIS


    FORMAT A: /SPACE


        On IBM DOS v6.01 the command:


        FORMAT A: /SPACE


        puts a 12288 byte file named MIRROR.FIL on the disk ...


        So, the command:


        FORMAT A: /U /SPACE


        just ruins the durn diskette!  A subsequent "DIR A:" gives you a:


          General failure reading drive A

          Abort, Retry, Fail


                              Vernon Frazee

===============================================================================

 

... Hidden OLR feature: CTRL-ALT-DEL to view BBS user password file.

___ Blue Wave/QWK v2.12


-!- EzyQwk V1.02

 ! Origin: Programmer's Corner BBS, Saint John, NB  (v32/v42) (1:255/6)


Ä Area: [ECHO] BATCH POWER PROG. ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ

  Msg#: 4973                                         Date: 09-12-93  20:28

  From: Gary Cooper                                  Read: Yes    Replied: No 

    To: ALL                                          Mark:                     

  Subj: MUF Ver. 1.6 #7

ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ

7)  DRIVPARM /c


    Syntax:  DRIVPARM /d:number [/c] [/f:factor] [/h:heads] [/i] [/n]

             [/s:sectors] [/t:tracks]


    /d:n   refers to the drive NUMBER (0=A:, 1=B:, 2=C:, etc...) of the drive

           whose parameters you are changing (in your case, it would be 2 for

           B:).


    /c     is the switch I was referring to for change line support.  IF YOU

           INCLUDE /c, YOU ARE TELLING DOS THAT YOUR COMPUTER *CAN* TELL

           WHETHER THE DRIVE DOOR HAS BEEN OPENED SINCE THE LAST ACCESS.


    /i     specifies an electronically-compatible 3.5 inch floppy disk-drive.

           You should use it if your computer's ROM BIOS does NOT support 3.5

           floppy diskette drives.


    /n     specifies a NON-removable block device


    The other parms are similar to DRIVER.SYS


                              IBM Technical Publication Information

                              forwarded by Andrew Barnhardt


    The '/C' switch doesn't actually check to see if the drive -door-

    has been opened or not, but it does make another check to see if

    the disk in there now is different from the one when the drive was

    last accessed.  I have to use that switch with my 5 1/4 floppy

    because it's an older drive working with a new motherboard (at

    least that's the explanation I've heard).


                              Andrew Barnhardt


    Does DRIVPARM return an errorlevel, or give a warning message?


                              Gary Cooper


    No, not that I'm aware of.  You insert the drivparm command in

    your CONFIG.SYS file.  Just DRIVPARM=xx xx ...


                              Andrew Barnhardt

===============================================================================

8)  IF EXIST


    IE: IF EXIST EMMXXXX0 GOTO APPLICATION


    This is a handy quirk of DOS - installable drivers are seen as files

    in all directories.  You can use the if exist test to either test for

    the existence of a directory, with "if exist <dirname>\nul", (which

    fails if the directory does not exist because the nul device is not

    found,) or to test whether a driver is loaded.


    Caveats:  you need to know the name of the directory or the driver

    whose existance you are testing, and this is MS/DOS specific - it

    doesn't work on network drives, and may not work under DR-DOS.


                              Gary Marden


    This works definitely under DRDOS:


              DR DOS Version 6.0

              Copyright (c) 1976,1982,1988,1990,1991 Digital Research Inc.

              Alle Rechte vorbehalten.


              C:\>if exist emmxxxx0 echo ja

              ja


                              Wolfram Serber


    Where did you learn the "EMMXXXX0" name from?


    Instead of typing MEM /C, type MEM /D for the "debug" listing.

    That should give the names you're looking for.


                              Erik Ratcliffe


    The trouble is, EXISTS returns TRUE for COM3/4 and LPT2/3 even

    though the hardware does not exist.


                              Rudy Lacchin

===============================================================================

 

... Aha! Another 'undocumented feature'!

___ Blue Wave/QWK v2.12


-!- EzyQwk V1.02

 ! Origin: Programmer's Corner BBS, Saint John, NB  (v32/v42) (1:255/6)


Ä Area: [ECHO] BATCH POWER PROG. ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ

  Msg#: 4974                                         Date: 09-12-93  20:30

  From: Gary Cooper                                  Read: Yes    Replied: No 

    To: ALL                                          Mark:                     

  Subj: MUF Ver. 1.6 #8

ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ

9) SWITCHES


    SWITCHES=/W


        Enables you to have your WINA20 file anywhere on your boot

        drive.  Without this you have to have it in the root directory.


                              Erik Ratcliffe


         You should also mention that this one should not be used with

         Windows 3.1. I've noticed a lot of people who do, and it wastes

         around 120K of UMBs.


                              George Hannah


         This is documented in DOS 6.0


                              Richard Pade


    SWITCHES=/F


        Do you know that there is a rarely known switch called /F?

        If you put this line:


              SWITCHES=/F


        as the first line in your CONFIG.SYS, MS-DOS would not delay 2

        seconds, but immediately start processing your CONFIG.SYS. This

        trick has no other effects (AFAIK), but those who DO know better,

        correct me if I'm wrong!


                              Samuel Tan Yi Hsuen


        But where would you put the switch, it's not like you load a device

        driver that early in boot up do you?


           RF? Beats me. I think it goes in the SHELL= statement. Just don't

           RF? remember what character you use. I saw it mentioned in the

           RF? Tech conference /K maybe?


        No, it's SWITCHES=/F, right?


                              Paul Senechko 


        Actually, its both:


            /W allows you to move the WINA20.386 file

            /K makes your AT Keyboard act like a XT

            /F Disables the wait

            /N Disables F5/F8 exiting


        and to use any just put the command SWITCHES= and the parameters

        on the first line of your config.sys (Can go on other lines, but for

        the /F and /N you need it at the first line....), also the Switches

        command IS compatible w/ DOS 5, but only using the /W & /K options


                              John Guillory


===============================================================================

10) FOR IN DO


          for %%z in (test1 test2 test3) do goto %%z

          goto end

          :test1

          echo test1

          :test2

          echo test2

          :test3

          echo test3

          :end


     When I posted this explaining the traps and pitfalls

     of FOR IN DO, something got lost. GOTO commands in FOR IN DO

     statements do not work correctly / as expected. This fragment

     will work in 4DOS, but not with COMMAND.COM. You've seen

     what happens when running under COMMAND.COM already. 4DOS

     will display test1 test2 test3.


     So, that's what I was trying to explain: that GOTO's don't work

     right, and that IF's will break FOR IN DO's.


                              Bill George

===============================================================================

 

... Any sufficiently advanced bug will become a feature.

___ Blue Wave/QWK v2.12


-!- EzyQwk V1.02

 ! Origin: Programmer's Corner BBS, Saint John, NB  (v32/v42) (1:255/6)


Ä Area: [ECHO] BATCH POWER PROG. ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ

  Msg#: 4975                                         Date: 09-12-93  20:32

  From: Gary Cooper                                  Read: Yes    Replied: No 

    To: ALL                                          Mark:                     

  Subj: MUF Ver. 1.6 #9

ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ

11) FOR %%V IN /SOMETHING


    ... quoting Dirk Treusch to All ...


    How can a batch file (without 4DOS) determine from which drive it has

    been started?


    Example: C:\> a:test.bat


    Now my batch should be able to find out that it is located on drive A:

    (not the path - only drive!).


    Mitch Ames responds:


    The variable %0 contains the name of the batch file

    _as_it_was_typed_at_the_command_line.  If you call the batch file as

    A:TEST.BAT, %0 will be "A:TEST.BAT".  If you have the directory on

    your path, and simply type TEST, then %0 will be "TEST".  The drive,

    path and extension will only appear in %0 if you enter them in the

    command used to call the batch file (either typed at the command

    line, or called from another batch file).


    So you _must_ specify the drive as part of the batch filename for

    this to work.  To extract the drive only, use STRINGS, or similar (I

    don't have a copy, so don't ask me to post it).  Alternatively use

    the undocumented FOR %%V in /SOMETHING command, eg:


          set drive=

          for %%v in (/%0) do call test2 %%v

          echo Calling drive is %drive%


    where TEST2.BAT is:


          if not '%drive%'=='' set drive=%1:


    Disclaimer - I haven't tested this.  Debugging is up to you.


    (You can, of course, fit this into a single recursive batch file -

    but that's left as an exercise for the student.)


    FOR %%V IN (/SOMETHING) DO WHATEVER will do WHATEVER twice - the

    first time with %%V set to the first character in SOMETHING ("S"),

    the second time with all the remaining characters in SOMETHING

    ("OMETHING").  If SOMETHING is only a single character, WHATEVER will

    only be called once, with that character in %%V.  If the single

    character is a wildcard (? or *) that wild card will _not_ be

    expanded to a set of filenames.  (The main purpose of this feature is

    apparently to allow inclusion of the literal characters "?" and "*" 

    without them being expanded.)


    This works in DOS 3.30 and 5 - I don't know about other versions.


                              Mitch Ames


===============================================================================

12) LEADING SLASH WITH FOR IN DO LOOP


    In the FOR statement in the INIT and COUNT routines below the

    parameters in the () show a leading "/".  This seems to separate

    the first digit of the environmental variable used within the

    brackets ().  Am I correct? Is this documented anywhere?


    :================= INIT =================

    set &=%4&|set n$=%4|set m$=%3|set #=%2|set !=%0

    if not '%m$%'=='0' for %%a in (/%m$%z) do if '%%a'=='0' set @=0

    %!%

    :================= COUNT ================

    if '%&%'=='&' goto PROCESS

    for %%a in (/%&%) do set &=%%a


                              Peter Joynson

      

    I have read some articles about this in PC Computing & PC Magazine.

    I don't believe it is documented anywhere but you're right, it strips

    off the first character of whatever string is passed.  I will try to

    find one of the articles that explains it better if you need it.


                              Robert Hupf


    Correct.  I believe it is not documented (up to DOS 5 anyway) by MS,

    but I have read from other sources that the leading / will split an

    item into the first character and everything else.  Eg:


            for %%n in (/hello there) do echo %%n


    will display "h", "ello" and "there".  "There" is not split because

    it is a separate item, delimited by the space.  If used with an item

    including wildcard (? or *) characters the item will not be expanded

    to the files which match it, thus allowing inclusion of those

    characters in the set.  Eg:


            for %%n in (/? /*.bat hello) do echo %%n


    will display "?", "*", ".bat", "hello".  This apparently is the

    original reason for the feature, but it may also be used recursively

    to parse a string one character at a time.


                              Mitch Ames

===============================================================================

 

... Features should be discovered, not documented.

___ Blue Wave/QWK v2.12


-!- EzyQwk V1.02

 ! Origin: Programmer's Corner BBS, Saint John, NB  (v32/v42) (1:255/6)


Ä Area: [ECHO] BATCH POWER PROG. ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ

  Msg#: 4976                                         Date: 09-12-93  20:34

  From: Gary Cooper                                  Read: Yes    Replied: No 

    To: ALL                                          Mark:                     

  Subj: MUF Ver. 1.6 #10

ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ

13)  ATTRIB


    ATTRIB +h dirname


    Is there anyway to create a hidden directory on a hard drive?


    I've since learned that DOS 5.0 ATTRIB can do the same thing

    from the command line:  ATTRIB +h dirname.


                              Gary Smith


    ATTRIB ,


    attrib ,|echo y|del *.*


    It is not really piping the output of attrib to echo.  Using the pipe

    is one way of stacking multiple commands on one line.  All the "attrib ,"

    does is reset _ALL_ attributes on _ALL_ files in the current directory.

    So if you were to run that from the root of your c: drive you would no

    longer have a bootable drive.


                              Jim Banghart


    Worked fine here, took out all the files (system, hidden, read-only),

    like a dream with no lock up, using MSDos 5.0


                              Terry Kreft


    I do not recommend this practice. It does attempt to pipe the output

    of attrib to echo, and thus writes a file to the directory specified

    by the environment variable TEMP. If you try to run this program in

    your TEMP directory, you will get a sharing violation. It also

    actually slows your program, because it has to write and delete a

    useless file (unless you have your TEMP on a ramdisk).


    I can't say I see much reason for stacking commands like this -- put

    the commands on separate lines. A character is a character, be it a

    carriage return or a pipe, and your files will be easier to understand.


                              Bruce Bowman

===============================================================================

14) INSTALLHIGH


    I think I may have found an undocumented feature for DOS 6....

    I wasn't able to find this anywhere in the online help.  It's

    called INSTALLHIGH= and amazingly enough it works just like

    INSTALL= but loads the file high!


    The only drawback to this is: Memmaker will not go through and

    add switches for that particular line during the "optimizing

    process".  It just takes it as it is currently.  But then again

    INSTALL= is ignored too!


    Example:

    DEVICE=C:\DOS\HIMEM.SYS

    DEVICE=C:\DOS\EMM386.EXE NOEMS HIGHSCAN WIN=F500-F7FF WIN=F200-F4FF

    dos=HIGH

    dos=UMB

    installhigh=c:\dos\share.exe


                              Robin Francis


    MUF reported in the magazine C'T:  You can use the DOS 6.0 command

    "installhigh" in config.sys to load TSR programs into UMA. A 48 byte

    environment will be added for every program.  If you use it you don't

    need the "loadhigh" in autoexec.bat any more.


    But Memmaker can't handle installhigh!


                              Thomas Erbe


    Further to Robins explanation, INSTALLHIGH cannot be directed to a

    specific UMB area and thus defaults to largest currently available.

    Like INSTALL it is processed (about) last of C.SYS lines and causes

    more consumed RAM overhead than calling TSR from A.BAT or later.


                              Richard Pade


    There is an undocumented CONFIG.SYS command called INSTALLHIGH. It

    is similar to INSTALL except that it will load the TSR into an UMB.

    It is available under DOS 6. However, it does not support the

    /L and /S switches that DEVICEHIGH and LOADHIGH support.


                              Tom Dyas


    Then it is useless, isn't it? It has less than the capabilities of

    LOADHIGH and DEVICEHIGH but load the same TSRs that they load ... no

    wonder it is an undocumented command.


                              Wayne Moses


    Just wondering, does INSTALLHIGH work with Microsoft DOS 5? It

    would also be nice to know why it is undocumented. It doesn't do

    anything major! Microsoft gains nothing by keeping it undocumented.

    Loading TSR's from CONFIG.SYS is better because an environment is

    not allocated for the TSR. A very small amount of memory is

    conserved, but it is still conserved.


                              Tom Dyas

===============================================================================

 

... DOS 6.0 - DOS 4.01 with its features documented.

___ Blue Wave/QWK v2.12


-!- EzyQwk V1.02

 ! Origin: Programmer's Corner BBS, Saint John, NB  (v32/v42) (1:255/6)


Ä Area: [ECHO] BATCH POWER PROG. ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ

  Msg#: 4977                                         Date: 09-12-93  20:35

  From: Gary Cooper                                  Read: Yes    Replied: No 

    To: ALL                                          Mark:                     

  Subj: MUF Ver. 1.6 #11

ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ

15) : (command)


    DOS uses a leading : to indicate a label.  If the next character

    following the : is a space or other non-alphanumeric char, DOS

    will decide it's an invalid label and skip to the next line,

    performing no further action.


                              Dennis Mccunney

===============================================================================

16) PATH


    With MS-Dos 6.0 you CAN exceed the normal path length limit by

    putting a "Set Path=C:\;..." in your Config.Sys file instead of

    your AutoExec.Bat file.  The usual limits do not apply there.


    I have put in a path well over 800 characters and it works fine.

    The path doesn't display correctly via PATH or SET, but it's in

    there and it all gets searched.


    I don't recommend having a path that long, mine is normally

    only 6-8 directories.


                              Andrew Barnhardt

===============================================================================

17) EDLIN


    where an EDLIN script is:


           -1,#r 1:^Z  1:

           -1,#r 2:^Z  2:

           -1,#r 3:^Z  3:

           -1,#r 4:^Z  4:

           -1,#r 5:^Z  5:

           -1,#r 6:^Z  6:

           -1,#r 7:^Z  7:

           -1,#r 8:^Z  8:

           -1,#r 9:^Z  9:

           e


    Note the spaces (one after R, two after ^Z) which prevent replacement

    of the second digit in a two digit number.


    This will update the last line only, so needs to be done at each

    boot.  '#' means last line +1. '-1' means the line before the current

    one (ie: the last line of the file, if "#" is the current line).  Note

    that you can only use '-1' in later versions (it works in 5, but not

    in 3.30 as far as I know).


                              Mitch Ames

===============================================================================

18) DELIMITING CHARACTER:


    Prior to DOS 5.0, there was an undocumented DOS function that

    would allow you to set the DOS option delimiting character to

    something else, like -.  Once you did this, you could use either

    \ *or* / in PATH specs.


    DOS 5.0 removed the function to *set* the option delimiter, but

    *retained* the one to query what it currently is!  (Don't ask me,

    ask M'Soft...)  Fortunately, the MKS Toolkit still works with no

    apparent glitches.


    I believe in pre-DOS 3.X versions that there was a parm you could

    provide in CONFIG.SYS to do this, but have no further details.


    Just remember: "undocumented" is a synonym for "unsupported, and

    not guaranteed to be there next release", which is what happened

    in the case I mentioned above.


                              Dennis Mccunney

===============================================================================

19) REM IN LINES WITH PIPES OR REDIRECTS


    ie:    REM echo y | del *.*


    Michael Serber reported that he encountered problems when

    he tried to REM out an "echo y|del *.*" line in his batch

    file.  Here is the content of some of the responses he 

    received in response to his question asking why he experienced

    the problem:


    It (the problem) appears to only occur if there is a pipe or

    redirection in the line (REM'd out), leading me to believe that

    DOS first handles pipes and redirections, then goes back to

    find out what to do with them.


                              John Mudge


    It's actually doing what it thinks you've told it: piping the

    output of REM to DEL.  Since REM _has_ no output (remember

    REM > NULLFILE?), DEL hangs, waiting for the answer to its

    question.


                              Gary Smith


    What is happening here is that DOS reads the entire line, and

    always processes redirection and piping *first*, regardless of

    where they happen to appear.


                              Dennis Mccunney

===============================================================================

 

... That's not a bug! It's a seldom-used, undocumented feature!

___ Blue Wave/QWK v2.12


-!- EzyQwk V1.02

 ! Origin: Programmer's Corner BBS, Saint John, NB  (v32/v42) (1:255/6)


Ä Area: [ECHO] BATCH POWER PROG. ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ

  Msg#: 4978                                         Date: 09-12-93  20:38

  From: Gary Cooper                                  Read: Yes    Replied: No 

    To: ALL                                          Mark:                     

  Subj: MUF Ver. 1.6 #12

ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ

20) CALL


    The DOS 5.0 manual, in the command reference for CALL, states:


    Syntax: call [drive:][path]filename [batch-parameters]


            Parameters [drive:][path]filename


            Specifies the name and location of the batch program you

            want to call.  Filename must have a .BAT extension.


            The latter sentence is not true in DOS 5.0.  CALL works

            equally well whether "filename" is a .BAT, .COM, or .EXE

            file, or even internal command the following all work

            just fine:


            call dir

            call mem

            call tree

            call echo Phhhhhhht!


                              Gary Smith


===============================================================================

21) CHOICE


    I blundered onto an interesting choice.com feature:


        CHOICE /C:XM*; /N /T:2,5

        if errorlevel=4 goto help

        if errorlevel=3 goto end

        ......etc


        The "*" is the escape key, and the ";" is F1 etc.


                              Robert Lindsay


===============================================================================

22) MEM /A


    If you do a MEM /A it'll give you details of what's in the first meg

    of memory.


    Windoze owners get MSD.EXE (a pretty undocumented utility), that tells

    you this sort of thing.  If you do a MEM /A it'll give you details of

    what's in the first meg of memory.


                              Ben Davis


===============================================================================

23) MOUSE /U


    Microsoft mouse driver version 8.1 has a /U switch.  Adding that switch

    loads all but 3.3k of the driver into HMA.  It's not quite the most

    recent version mouse driver, but hey, a mouse driver is a mouse driver

    is a mouse driver, right?  Especially when it only takes 3.3k of ram!


                              Mark Carter


    Are you getting that result by loading the mouse driver high on a 286?

    If so, that is good news. Mine takes up 12k of main RAM (MS mouse

    driver ver. 7.0).


                              Gerry Pareja


    Mouse 8.0 _is_ able to load itself into HMA (I think) on a 286 by using

    the undocumented /U switch. I read it in PC Magazine sometime back.

    Also, PC Mag said that the BUFFERS have to be set to a low value, e.g. 5.


                               Ng Cheng Kiang

===============================================================================

 

... All On-Line readers, press the un-documented ALT-H combination now...

___ Blue Wave/QWK v2.12


-!- EzyQwk V1.02

 ! Origin: Programmer's Corner BBS, Saint John, NB  (v32/v42) (1:255/6)


Ä Area: [ECHO] BATCH POWER PROG. ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ

  Msg#: 4979                                         Date: 09-12-93  20:40

  From: Gary Cooper                                  Read: Yes    Replied: No 

    To: ALL                                          Mark:                     

  Subj: MUF Ver. 1.6 #13

ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ

24) %0


    Note that %0 is (almost) always defined as the name of the batch file

    itself (including drive\directory as typed at the command line).  The

    only time %0 is not defined is in Autoexec.bat when run by

    Command.com at boot time (or command/p).


                              Mitch Ames


    The %0 parameter is the name of the program.  But wait, there's

    more.  If you want to test for the name of the program you are in!

    What do your want to test for?


    One time you type "edit", another you type "EDIT", another "EDIT.BAT",

    another "C:EDIT.BAT", and another "C:\BELFRY\EDIT.BAT".  How many

    combinations do you want to test for at the start of your batch file?


    You can map the file name to upper case and take care of some of the

    problem as follows:


        SET SAVEPATH=%PATH%

        PATH %0

        SET PROGNAME=%PATH%

        PATH %SAVEPATH%

        SET SAVEPATH=


    To do the test, something like this might work:


        FOR %%E IN (EDIT EDIT.BAT C:EDIT C:EDIT.BAT C:\BELFRY\EDIT ...

               ... C:\BELFRY\EDIT.BAT) DO IF '%%E'=='%PROGNAME%' GOTO HIT

        ECHO BAD COMMAND OR FILE NAME

        GOTO ENDIT

        ...

        :HIT

        REM START EXECUTION HERE....


     There is one last gotcha to %0.  When AUTOEXEC.BAT is run by the bootup

     sequence, %0 has no value.  This is important if you want to find out if

     you are in AUTOEXEC.BAT, and if you are in AUTOEXEC.BAT for the first

     time.


     I have seen this work with IBM's PC-DOS 3.10, various flavors of

     MS-DOS 3.10, 3.30, 3.31, 4.01, and 5.00.  It also seems to work

     with DR-DOS 6.0.  As to 4DOS, I have no idea, but would welcome

     feedback on the matter (although 4DOS and DR-DOS hardly qualify

     for a MUF entry....)


                              Mike Avery


    So far as I know, it's not been documented anywhere 'officially',

    but I did read about it in an article sometime back, probably

    either in PC Magazine or in PC Computing.


                              Gary Smith


    I've never seen it documented - it just bit me one day REAL HARD!

     

    Well, the way I figured it was that when the boot process hands control

    to AUTOEXEC.BAT, the normal command line interface isn't used, so %0

    never gets set.


                              Mike Avery


    This feature can actually be useful, because you can put

    statements like this in your autoexec:


       if NOT (%0) == () goto skip

       [statements that should not be re-executed go here]

       :skip

       [statements that can be re-executed go here]

       path ...

       set ...

       etc.


    Then you can recreate your bootup environment at any time by

    simply typing AUTOEXEC.


                              Gary Smith

===============================================================================

 

... Bill Gates and his search for undocumented Windows 3.1 code...

___ Blue Wave/QWK v2.12


-!- EzyQwk V1.02

 ! Origin: Programmer's Corner BBS, Saint John, NB  (v32/v42) (1:255/6)


Ä Area: [ECHO] BATCH POWER PROG. ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ

  Msg#: 4980                                         Date: 09-12-93  20:44

  From: Gary Cooper                                  Read: Yes    Replied: No 

    To: ALL                                          Mark:                     

  Subj: MUF Ver. 1.6 #14

ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ

25) , . ...


DIR,    Using a comma IMMEDIATELY after DIR, shows ALL files, including

        the HIDDEN ones.


        EXAMPLE: DIR,


                              Willem van den Broek


        This appears only to work with version 5.  I tried it with 3.30,

        and it didn't display either IO.SYS, MSDOS.SYS (both with S, H

        and R attribs) or a test file with A and H attribs.


        With version 5 it displayed the test file with H and A, but would

        not display IO.SYS or MSDOS.SYS with S, H and R.  This doesn't

        surprise me actually, since S alone (without H) will prevent

        inclusion of a file in a normal DIR.


        I didn't try version 4.


                              Mitch Ames


        Interesting: it does for me (display DOS5 IO.SYS and MSDOS.SYS):

        However, 4DOS does not do it:


                              Dennis Mccunney


        It was pointed out in the 4DOS echo, and there were people

        who said it didn't work for them.   But, on my machine

        running straight dos6, it works! DIR, (dir comma) in my C:\

        shows all files including hidden and system.


                              Bill George


DIR..   With DOS 6.0 you can get a directory of -all- files (hidden,

        system, etc.) with this command.


        It was in a PC/Mag. or PC/Comp. issue not too long ago.


                              Andrew Barnhardt


        Have you noticed also how DIR... only displays directories, not

        files?


                              Gary Marden


        That's pretty slick. I tried DIR.. and got the parent 

        directory. DIR... got the current directory subdirs only.


                              Bill George


        Works for any level of directories. ".." will go to the previous

        directory as with pure DOS, "..." will go to the directory before

        the previous and so on.


                              Ng Cheng Kiang


        In DOS 5.0 it displays directories and files with no extensions.

        I tried "DIR ...", "DIR...", and "DIR ....".  They all behave

        the same way.


                              Gary Smith


        With DOS 5.0 and NDOS 6.0 DIR... gives me a list of

        subdirectories off of the root and a list of all files in

        the root directory, regardless of the file extension.

        It will yield this result regardless of what directory / 

        subdirectory I am in at the time the command is issued.


                              Gary Cooper

        

        COMMAND.COM generally seems to ignore excess characters.  Try

        copying something the AIRPLANES.PLAN, for example, and see what

        happens.


                              Gary Smith


        While I was playing around with "dir ..." and trying to see how

        it parses to showing all extensionless entities in the current

        directory, I noticed that DIR doesn't care if a specified directory

        structure exists or not, as long as the overall structure points

        back to something that does exist, i.e.


            "dir \thisdirdoesnotexist\.."


        will ignore the garbage and show the root directory.  If

        c:\bat exists, then


            "dir c:\bat\thisdirdoesnotexist\nordoesthisone\..\.."


        will show the c:\bat directory.


        Again, absolutely useless as far as i can tell <g>, but interesting.


        BTW, has anybody solved the "dir ..." mystery yet?  I also noticed

        "dir \..." works while "dir \bat\..." fails (any explicitly specified

        directory other than the root generates an "invalid directory"

        message).


                              Paul Leonard

===============================================================================

 

... WOMAN.ZIP....Great program, no documentation! 

___ Blue Wave/QWK v2.12


-!- EzyQwk V1.02

 ! Origin: Programmer's Corner BBS, Saint John, NB  (v32/v42) (1:255/6)


Ä Area: [ECHO] BATCH POWER PROG. ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ

  Msg#: 4981                                         Date: 09-12-93  20:48

  From: Gary Cooper                                  Read: Yes    Replied: No 

    To: ALL                                          Mark:                     

  Subj: MUF Ver. 1.6 #15

ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ

26) COPY. A:


    The use of a decimal point IMMEDIATELY after some DOS statements,

    will replace *.*


    EXAMPLES: DEL.       (erase all files in current directory)

              COPY. A:   (copy all files in current directory to A:)


    There may be more statements with which it works, but I haven't

    tried them yet.


                              Willem van den Broek


    "." means the current directory, and Command.com will assume that

    \directory implies \directory\*.* for most commands where a

    filename(s) should be specified, eg:


    DIR \ is the same as DIR \*.*

    COPY \FRED is the same as COPY \FRED\*.*

    COPY. A:\ is the same as COPY .\*.* A:\ which is the same as COPY *.* A:\

    DEL. is the same as DEL .\*.* which is the same as DEL *.*


                              Mitch Ames


    Have you noticed also how DIR ... only displays directories, not files?


                              Gary Marden


    In DOS 5.0 it displays directories and files with no extensions.

    I tried "DIR ...", "DIR...", and "DIR ....".  They all behave

    the same way.


                              Gary Smith


    Another good thing is you can travel from directories to

    directories without typing "CD".  Just type the directory name

    followed by a backslash '\'.


    Example: To go from C:\BATCH to C:\WP51, you type "\wp51\".

    That's it!  fast and easy.


                              Marc Y. Paulin


    If you are in the following directory :


        \WORD\FILES\LETTERS\APRIL


    And wanted to go to the directory \WORD\FILES, you'd normally 

    type two lines : 


         CD \

         CD WORD\FILES


    Or even the single line "CD \WORD\FILES" to combine the two 

    commands into one. There is a shorter way, simply type the 

    following : CD ..\..     You're there !


                              Andrew Barnhardt

           

    In DOS 5.0, it displays files and directories which have no extension.


                              Larry Kessler


    On this machine with DOS 5.0 and NDOS 6.0 DIR... gives me a list of

    subdirectories off of the root and a list of all files in the root

    directory, regardless of the file extension.  It will yield this result

    regardless of what directory/subdirectory I am in at the time the command

    is issued.


                              Gary Cooper


    Editor's Note:


    I admit that "features" in the last two MUFs may be documented

    (although obscure feature), the reason that it continues to be

    seen in the MUF list is because I believe that the ability to use

    the period immediately IE: COPY. is not documented.  What is

    documented is the fact that "." and ".." can be used to represent

    the current and parent directories respectively, and these will work

    with many applications which can handle directory names as arguments.

    In this case the "." could also be viewed as a replacement for "*.*"


===============================================================================

 

... Documentation - The worst part of programming.

___ Blue Wave/QWK v2.12


-!- EzyQwk V1.02

 ! Origin: Programmer's Corner BBS, Saint John, NB  (v32/v42) (1:255/6)


Ä Area: [ECHO] BATCH POWER PROG. ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ

  Msg#: 4982                                         Date: 09-12-93  20:49

  From: Gary Cooper                                  Read: Yes    Replied: No 

    To: ALL                                          Mark:                     

  Subj: MUF Ver. 1.6 #16

ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ

27) MULTIPLE DOS COMMANDS ON ONE LINE


    set &=%4&|set n$=%4|set m$=%3|set #=%2|set !=%0 

            /|\       /|\       /|\      /|\ 

             |_________|_________|________|_________________________Separators



    The separators (|) used in the line, are these doing anything

    other than separating commands?  Can this be used for entering multiple

    commands on any line in a batch file regardless of type of command?


                              Peter Joynson


    I believe you are right about this, but I think it pipes any output from

    the previous command to the next one (your example doesn't have any

    output.  For example: ECHO Y|ERASE *.*  This would pipe the Y to the

    command ERASE *.* so you wouldn't have to enter the Y for the "Are you

    sure" prompt.


                              Robert Hupf


    The | is a pipe symbol, well documented in your DOS manual.  (Read it

    before you read the rest of this message if you don't know about

    pipes already, otherwise the rest won't make sense.)  Pipes can be

    used to put multiple commands on a single line, provided that the

    first command does not write anything to StdOout which might cause a

    problem when read by the second command as StdIn. Also, it is assumed

    that you don't want to see the output of any but the last command,

    since each command's output will be piped to the next's input.  Note

    that in this case SET neither writes anything to StdOut nor reads

    StdIn.  Thirdly, you must have write access to the current drive, or

    %temp% if defined, since a pipe always creates a temporary file.  Eg

    this would not work if run from a write protected floppy (unless

    %temp% was defined), since DOS would fail to create the temporary

    files.


    Pipes create temporary files even if no actual data is sent to

    StdOut because Command effectively treats this:


            prog1 | prog2


    as something like this:


            prog1 > %temp%tempfile

            prog2 < %temp%tempfile

            del %temp%tempfile


    Even if prog1 doesn't create any output, at least one zero length

    file is created.  To demonstrate, try this


            set temp=

            set | dir


    I must say this beats the usual boring old "how do I echo a blank

    line in a batch file" etc.


                              Mitch Ames


===============================================================================

28) COM or EXE


    Also, have you noticed that 4DOS.COM (when viewed with LIST) begins

    with the letters "MZ"?  Isn't that the mark of a .EXE file?  Very

    interesting...


                              Thomas Smith


    It sure is, and that's an example of something else that may be

    a MUF.  DOS doesn't care whether the extension on an executable

    file is .COM or .EXE.  It looks at the beginning of the file and

    does the right thing according to what it finds.


                              Gary Smith


===============================================================================

 

... Real users don't read documentation.

___ Blue Wave/QWK v2.12


-!- EzyQwk V1.02

 ! Origin: Programmer's Corner BBS, Saint John, NB  (v32/v42) (1:255/6)


Ä Area: [ECHO] BATCH POWER PROG. ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ

  Msg#: 4983                                         Date: 09-12-93  20:51

  From: Gary Cooper                                  Read: Yes    Replied: No 

    To: ALL                                          Mark:                     

  Subj: MUF Ver. 1.6 #17

ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ

Editor's Note:


Technically the following information is NOT a MUF, but is included

here due to the fact that it may help save someone a lot of grief!

Similar to advising others not to use delayed cache writes and DOS

6.0's DoubleSpace.


29) CHKDSK


    Can you tell me the _date_ of the BAD CHKDSK?  I live in

    fear of it as I mainly work on other peoples computers an I

    have no way of telling if I will destroy their HD with a

    simple chkdsk command!


                              Wallace Mcgee


    The only problem with CHKDSK is with large partitions where DOS uses

    a 256-sector FAT. Specifically with partition sizes in the ranges of:


        127MB-129MB

        254MB-258MB

        508MB-516MB

        1018MB-1030MB

        2035MB-2061MB


    The date of the CHKDSK that has that problem is 04/09/91. The

    replacement being dated 11/11/91.


    UNDELETE has the same problem for the same reason.


    Bottom line is - if you don't have partitions in these size ranges -

    you don't have a problem.


    The corrected versions can be had by downloading from the MS BBS.

    Probably also available off of CompuServ. The file to look for is:

    PD0464.EXE. The phone number for the MS BBS is (206) 936-6735.


    Hope that helps you and others with the same question.


                              Steve Osterday


===============================================================================

30) DELTREE


    Another new, and potentially dangerous, feature of IBM DOS v6.01.

    If you were on drive C: and issued the command:


    DELTREE /Y \


    it would dutifully, and without stopping to ask for verification,

    delete your entire drive C:!


    (You can test it on a floppy with directories, subdirectories,

    and files scattered throughout ... just make sure you specify

    and/or are on that drive (disk) when issuing the above command).


                              Vernon Frazee

===============================================================================

Well folks, that's it for Vol.1 #6


Please forward any information about other Fabulous MUFs to Gary Cooper

in the FidoNet BatPower echo or at the addresses below.


Gary Cooper, Co-Sysop Programmer's Corner FidoNet 1:255/6.0

gary.cooper.@f6.n255.z1.fidonet.org


Thanks!  Till next time, we return you to your regularly scheduled

BatPower program . . .

 

... Damn the documentation, full speed ahead!

___ Blue Wave/QWK v2.12


-!- EzyQwk V1.02

 ! Origin: Programmer's Corner BBS, Saint John, NB  (v32/v42) (1:255/6)


Comments

Popular posts from this blog

BOTTOM LIVE script

Fawlty Towers script for "A Touch of Class"