 Area: Batch Language Programming                     FI 
  Msg#: 422                                          Date: 05 Oct 96  10:15:20
  From: Vernon Frazee                                Read: Yes    Replied: No
    To: Brian Fields                                 Mark:
  Subj: Batch by date

                                                       5-Oct-1996 10:15
    Hello Brian,

    On 03-Oct-96 at 11:10:23, "Vernon Frazee" and "Brian Fields" were
    discussing "Re: Batch by date":

VF> I've been using the idea for years and will admit that it does have
VF> it's limitations but, it doesn't cost a cent extra and is almost
VF> always readily available on millions of DOS machines.

BF> But, the limitation is, that it would execute every single time you
BF> boot... This does it once on the requisite day.

@echo off
:ONCEADAY.BAT runs a specified program once-a-day only -----------------
:Notes: This BATch file is self modifying!  It keeps track of every date
:       and the command(s) issued on that date at end of this file.
:       Requires DOS's FIND (somewhere in current PATH is fine).
:       Use "CURRENT /C" (not the quotes) to clear all dates from file.
:-----------------------------------------------------------------------
 if (%1%2)==(dateis) goto GOTIT
 if (%1)==(/?) goto SYNTAX
 if (%1)==() goto SYNTAX
 for %%x in (:) do set colons=%%x%%x
 for %%x in (c C) do if (%1)==(/%%x) goto CLEAR
 set program=%1 %2 %3 %4
 ver|date>temptemp.bat
 echo %0 %%1 %%2 %%3 %%4>current.bat
 temptemp
:GOTIT -----------------------------------------------------------------
 set date=%4
 find /c "%colons%%4%program%" C:\BAT\%0.BAT>temptemp.bat
 echo set current=%%2>--------.bat
 call temptemp.bat
 if (%current%)==(0) echo %colons%%date%%program%>>C:\BAT\%0.BAT
 if (%current%)==(0) goto DO_IT
 echo Command: %program%
 echo          has already been run today.
 goto CLEANUP
:DO_IT -----------------------------------------------------------------
 cls
 echo Issuing command: %program% ...
 echo.
 call %program%
 goto CLEANUP
:CLEAR -----------------------------------------------------------------
 type C:\BAT\%0.BAT|find /v "%colons%">C:\BAT\%0.BAT
:CLEANUP ---------------------------------------------------------------
 for %%x in (-------- temptemp current) do if exist %%x.bat del %%x.bat
 for %%x in (program colons current date) do set %%x=
 goto END
:SYNTAX ----------------------------------------------------------------
 cls
 echo.
 echo    Name: ONCEADAY.BAT
 echo.
 echo  Author: Vernon Frazee 03/03/94
 echo.
 echo Purpose: Run specified command only once a day.
 echo.
 echo  Syntax: ONCEADAY program_name/command [parm_1] [parm_2] [parm_3]
 echo.
 echo          ONCEADAY /C  clears all entries
 echo.
 echo          ONCEADAY /?  displays this help
 echo.
 echo Example: ONCEADAY DEFRAG C: /F /SN
 echo.
 echo   Notes: Requires DOS's FIND (must be available in current PATH)
 echo.
 echo          Requires at least approx 50 bytes free environment space
 echo.
 echo          ONCEADAY.BAT is self modifying!  (It keeps track of when
 echo                       and what was run at the end of the file).
 echo.
 goto END
:END (Data storage begins below) --------------------------------- -vjf-

BF> Also, Date Check is FREEWARE... :)

    So was what I had posted, as well as the above, a-n-d both can
    easily be modified to suit. <g>

 -- NetMail: 1:135/71.17    E-Mail: vernon.frazee@sunshine.com     -vjf-
 -- Main BossNode: SOX! BBS * (305) 821-3317 * Hialeah FL USA * 1:135/71
-!- Terminate 4.00/Pro
 ! Origin: Vern's Point * Hollywood Lakes, Florida * USA * (1:135/71.17)

 Area: Fido: Batch Languages Programming 
  Msg#: 62                                           Date: 11 Oct 96  03:14:56
  From: GARY SMITH                                   Read: Yes    Replied: No
    To: JEFF FOY                                     Mark:
  Subj: < AND > IN BATCH FILES

JF> I have a friend who, as part of a batch file, would like to do the
  > following:

JF> echo Press <enter> to continue...

JF> Is there any possible way to get those <> symbols to appear short of
  > using an external print routine?

This will do the job if you don't mind a blank line preceding
the "Press" line.  Note that the fifth line is blank, and is
essential.

@echo off
set {P}=%PROMPT%
prompt Press $lenter$g to continue...
echo on

@echo off
prompt %{P}%
set {P}=

On the other hand, this application is ideal for Chad Wagner's
nice little free utility EchoPlus, which does it in one line:

ep Press $lenter$g to continue...$_

(The $_ supplies a carriage return, which may or may not be
appropriate, depending on the application.)
-!-
  OLX 1.53  Cats are smarter than dogs; eight cats won't pull a sled.
 ! Origin: The Inner Circle, Pickerington, Oh (614)861-8377 (1:226/110)

 Area: Batch Language Programming                     FI 
  Msg#: 442                                          Date: 22 Oct 96  18:25:11
  From: Martin Lewicki                               Read: Yes    Replied: No
    To: All                                          Mark:
  Subj: Julian DAYS..not date!

Don't mean to be pedantic but...

   What we are talking about here is the Julian DAY - NOT the Julian DATE. This
last, the Julian Date, refers to a date in the Julian Calendar named after it's
institutioner Julius Ceasar in 46 BC. The Julian Calendar which is the
precursor to our present day calendar system has nothing to do with the Julian
Day system.

   The Julian DAY, which is what everyone here is on about was introduced by
the French scholar Joseph Scaliger (1540-1609) to express an interval of time
without having to make tedious error prone number-of-days-elapsed sums from our
rather chaotic calendar system. It was primarily invented for astronomy
purposes.


Martin Lewicki

-!- ProBoard v2.15 [EVALUATION]
 ! Origin: Hills BBS +61-8-838-96779 (3:800/851)

 Area: Batch Language Programming                     FI 
  Msg#: 442                                          Date: 05 Nov 96  23:28:20
  From: Michael Marquart                             Read: Yes    Replied: No
    To: Mark Allpress                                Mark:
  Subj: Batch files to run windows comms programs

 ~~ Mark Allpress said to Michael Marquart ~~
 ~~ Regarding Batch files to run windows comms programs ~~
 ~~ on 04 Nov 96  17:33:00 ~~

 Hi Mark!

 MA> I saw your article in the Sept issue of the PC Update magazine,
 MA> and can get the call waiting batch file to run fine under Dos (6.2).
 MA> However, I have a windows (3.11) based comms program, and the batch
 MA> file will not run in windows.  If I try and run it under a Dos
 MA> window, the error message is "Out of Environment Space".

 (Umm this is the PS after I have responded and am re-reading my post.
 If your using a windows comms program, then all you can hope for is to
 automatically disable call waiting with one batch file (icon) and re-enabling
 it with another, after putting the appropriate commands in each batch file.
 I think you'll be able to suss it out, but if not, don't hesitate to ask)

 The out of Environment Space error can be rectified using a PIF file under
 windows to run the Batch File.

 MA> Is it possible to write similar batch files for running just before
 MA> windows programs??

 The method you could use is to Start PIFEDIT, which should be in your MAIN
 program group, and then fill in the following:

 =======================================================================
 Program Filename:      COMMAND.COM

 Optional Parameters:   /e:1024 /c CALLWAIT.BAT
 Startup Directory:     [drive]:\[path to batchfile in comms directory]
 =======================================================================

 Leave everything else as it defaults to, and save the pif, perhaps as
 COMMS.PIF, in the default Windows directory and quit.

 If you create a new icon by select File -> New -> Program item -> Browse
 and select the COMMS.PIF then -> change icon
 the resulting icon should start up your CALLWAIT.BAT and allow it 1024
 bytes of environment space for it's use; whereas before it had a maximum of
 256 or (the size of the master environment + the next multiple of 16) bytes,
 which ever was the higher, as I understand it.

 Another method of allowing extra environment space is to modify Command.Com
 itself so that the default of 256 is increased - mine is patched to 1024.

 Here is a batch file which will patch your command.com permanently.

 Run it using 40 as the parameter and then reboot and you shouldn't see the
 Out of environment space error again!

::===========================================================================
@echo off
:: Author - Peter Lovell - Batpower 4/1/96
    echo.
    if "%1"=="" goto Instruct
    ver>ms-dot.bat
    echo set ver=%%2>ms-dos.bat
    call ms-dot.bat
    if "%ver%"=="" goto Error
    echo MS-DOS Version %ver% detected
    echo @prompt debug command.new $l ms-dos.bat $g nul>ms-dos.bat
    %comspec%/e:2048/c ms-dos.bat>ms-dot.bat

:: remove any attributes from command.com, just in case.
    attrib %comspec% -r -s -h

    copy %comspec% command.new>nul
    copy %comspec% command.old>nul

:Test_62_
    if not %ver%==6.22 if not %ver%==6.20 goto Test_600
    echo e 1777 %1>ms-dos.bat
    goto Patch_It

:Test_600
    if not %ver%==6.00 goto Test_500
    echo e 1767 %1>ms-dos.bat
    goto Patch_It

:Test_500
    if not %ver%==5.00 goto Test_401
    echo e 1666 %1>ms-dos.bat
    goto Patch_It

:Test_401
    if not %ver%==5.00 goto Test_330
    echo e 1c2a %1>ms-dos.bat
    goto Patch_It

:Test_330
    if not %ver%==3.30 goto Error
    echo e eb8 %1>ms-dos.bat
    goto Patch_It

:Patch_It
    echo w>>ms-dos.bat
    echo q>>ms-dos.bat
    call ms-dot.bat
    copy command.new %comspec%>nul
    del command.new
    echo %comspec% has been patched as specified by %%1=%1
    echo.
    fc/b command.old %comspec%
    echo COMMAND.OLD lives in the current directory.
    goto Exit

:Instruct
    echo.
    echo. Patch %comspec% to alter the default environment size:
    echo.
    echo.               Various environment size values:
    echo.
    echo.           01 =   16 bytes           40 = 1024 bytes
    echo.           10 =  256 bytes           60 = 1536 bytes
    echo.           20 =  512 bytes           80 = 2048 bytes
    echo.           30 =  768 bytes           FF = 4080 bytes
    echo.
    echo.  Command syntax is:
    echo.
    echo.       %0 new_environment_size_in_hex
    echo.
    echo.  eg.  %0 40
    echo.
    echo.       will patch %comspec% to have a default
    echo.       environment size of 1024 bytes
    echo.
    goto Exit

:Error
    echo 
    if "%ver%"=="" echo Unable to detect MS-DOS Version
    if not "%ver%"=="" echo Unable to patch MS-DOS Version %ver%

:Exit
    for %%a in (t s) do if exist ms-do%%a.bat del ms-do%%a.bat
    echo.
::===========================================================================

 Regards                        _!_
                Mic         -----o-----
                                " "


-!-
 ! Origin: Melbourne PC User Group  +61-3-9699-6788 (3:632/309)

 Area: Batch Language Programming                     FI 
  Msg#: 444                                          Date: 10 Nov 96  18:37:38
  From: Michael Marquart                             Read: Yes    Replied: No
    To: Monte Bliss                                  Mark:
  Subj: PRN AND LPT2

 ~~ Bruce Howells said to Monte Bliss ~~
 ~~ Regarding PRN AND LPT2 ~~
 ~~ on 07 Nov 96  12:17:36 ~~

 Hi Monte!

 BH> Hi, you have been asking how to set LPT2 to PRN, I would guess that
 BH> if you were to grab one of the Printer SWAP utilities from a bbs that
 BH> this would do the trick. These kind of utils. allow you to exchange
 BH> LPT1 for LPT2 (or whatever) instead of physically changing plugs.

 Here is a batch method designed by Vernon Frazee:

      @echo off
      :LPT.BAT (LinePrinTer) -----------------------------------------
      :  Purpose: Display current LPT1 and LPT2 addresses or
      :           Swap LPT2 and LPT1 by using parameter /S
      : Requires: DOS's DEBUG and FIND (somewhere in PATH is cool)
      :Begin ---------------------------------------------------------
       if (%1)==() if not (%lpt1%%lpt2%)==() goto DisplayStatus
       if (%1)==(/?) if not (%lpt1%%lpt2%)==() goto DisplayStatus
       for %%x in (s S swap SWAP Swap) do if (%1)==(/%%x) goto SwapLPT
      :GetStatus -----------------------------------------------------
       echo d 40:8>tmptmp.scr
       echo q>>tmptmp.scr
       debug<tmptmp.scr>tmptmp.scr
       type tmptmp.scr|find "0000">tmptmp.bat
       echo set lpt1=%%1 %%2>0040.bat
       echo set lpt2=%%3 %%4>>0040.bat
       for %%x in (call del) do %%x tmptmp.bat
       del 0040.bat
       if "%!%"=="!" goto swapLPT
       goto DisplayStatus
      :SwapLPT -------------------------------------------------------
       set !=!
       if (%lpt1%%lpt2%)==() goto GetStatus
       set !=
       echo e 0040:0008 %lpt2% %lpt1%>tmptmp.scr
       echo q>>tmptmp.scr
       debug<tmptmp.scr>nul
       goto GetStatus
      :DisplayStatus -------------------------------------------------
       echo LPT1=%lpt1%
       echo LPT2=%lpt2%
      :Cleanup -------------------------------------------------------
       if exist tmptmp.scr del tmptmp.scr
      :End ----------------------------------------------------- -vjf-


 Regards                        _!_
                Mic         -----o-----
                                " "


-!-
 ! Origin: Melbourne PC User Group  +61-3-9699-6788 (3:632/309)

 Area: Batch Language Programming                     FI 
  Msg#: 450                                          Date: 22 Nov 96  23:46:52
  From: Larry Nelson                                 Read: Yes    Replied: No
    To: Curtis Canning                               Mark:
  Subj: goto

         CURTIS:

 Subject: Goto

 CC> What I was wondering is it possible to convert this
 CC> batch file down below, not only to find the directory
 CC> but acutely go there to.

 CC> eg.. So lets say I want to find WIN.INI, I type in LOCATE WIN.INI
 CC>      and on the screen it sues :

 CC> A     C:\WINDOWS\WIN.INI

 CC>      But at the end of it, it will take me to C:\WINDOWS .

 CC> echo +---------------------------------------------------+
 CC> echo | Wildcard locate file names on a device            |
 CC> echo | By Prof. Timo Salmi, ts@uwasa.fi, Sat 29-Aug-1992 |
 CC> echo +---------------------------------------------------+

      While I'd never attempt to improve on the good Prof.Salmi's
      mastery of Batch (we've all learned a lot from his work)
      here is one method of finding a file and then moving to
      that file's location.

 ::GOTHERE.BAT/DOS 6.22
 @echo off
 cls
      if %1! == ! goto hlp
      dir/s/-p %1\%2|find "Directory">directo1.bat
   echo set dir=%%2>director.bat
      call directo1
      del directo?.bat
      %1
      cd %dir%
      dir %2
      set dir=
   goto L8r
 :hlp
   echo SNTAX = gothere (Drive: to be searched) (File to be found)
 :L8r

      As I have Win95 on a different drive: than the one I do
      my Batch writting on we have an added bonus in that I have
      created Gothere.bat to not only find a given file and go there,
      but to also search a given drive: for that file then change
      drives before CDing to he directory in question.
 :L8r
               Larry
               .....In a pinch a stone ax still works.....

-!- Maximus 2.02
 ! Origin: MSDOS MAXIMUS BBS (1:343/101)

 Area: Batch Language Programming                     FI 
  Msg#: 450                                          Date: 25 Nov 96  15:41:11
  From: Douglas Myers                                Read: Yes    Replied: No
    To: Jtenders                                     Mark:
  Subj: Noisy Batches

 Jt> Thank you. I am running Win95 wich prevents the ALT+(key) thing
 Jt> to  get an ascii character on the screen. So I would appreciate it if
 Jt> you  could send me either the beep.com or just simple send me a message
 Jt> that  has the diamond character in it and then I can save it and copy
 Jt> where  ever I need it.

        Low ASCII characters don't usually make it through echomail,
        so I'm sending you netmail instead with the ASCII 7
        character.

        Sometime, get yourself a copy of Qedit, a small DOS editor
        with a wealth of features, one of which is the ability to
        accept the ASCII characters from the numeric keypad.  I
        don't have Win95, but the editors in Win3.1 are totally
        unsuitable for writing batch files.

        Here's a debug script for creating beep.com.  Just clip
        between the lines, save the text file as BEEP.SCR, and then
        create the file by running DEBUG < BEEP.SCR.

        --------------
        n BEEP.COM
        e100 B8 7 E CD 10 CD " "
        rCX
        07
        w
        q
        --------------

~~~ TGWave v1.12 [NR]
-!- Howdy's * Home of SpeakEasy *
 ! Origin: Howdy's Whistle Stop  Summerdale PA  717 732 6820 (1:270/720)

 Area: Batch Language Programming                     FI 
  Msg#: 442                                          Date: 29 Nov 96  20:32:46
  From: Larry Nelson                                 Read: Yes    Replied: No
    To: Douglas Myers                                Mark:
  Subj: ZZ.BAT


         DOUGLAS:

 Subject: LISP.BAT

 DM>        Yeah, I caught that in this conference somewhere.  I think
 DM>        Bat Lang has it posted in the BAT-FAQ file.  I was hoping to
 DM>        use that trick to get rid of zero-byte files left over in my
 DM>        mailer's netmail directory after some failures... but it had
 DM>        the side-effect of changing the file date on the non-zero
 DM>        files, and that interfered with some other utilities :(
 DM>        I've been trying to find a KILLZERO.LZH file which a few
 DM>        folks have told me will do the job, but it's old and off of
 DM>        most people's systems.  I kinda got around it by copying all
 DM>        files into a temporary directory (the zero-byte files won't
 DM>        copy), then deleting the entire directory, then moving the
 DM>        files back.  The disk writing time makes it less than ideal,
 DM>        but it will do until I find a proper utility.

      In the interests of reduceing the number of superfluous (my
      word for the day. have to use it three more times before
      midnite) extraDOS utilities, I have crafted from peices and
      parts of our last few posts, ZapZero.bat

 ::ZZ.BAT/DOS6.22/WIN95(Run window)
 ::ZapZero.bat searches out and destroys all 0byte files in a
 ::given directory
 @echo off
 cls
      if %1! == ! goto hlp
      dir/b/os %1>ente2.bat
      type ente2.bat|find/v "ENTE2.BAT">ente2.bat
 :AGAIN
      fc ente2.bat nul/n|date|find " 1: ">ente1.bat
   echo set $name=%%5>enter.bat
      call ente1
      type ente2.bat|find/v "%$name%">ente2.bat
      dir %1\%$name%|find "     0 ">nul
      if not errorlevel 1 del %1\%$name%
      if errorlevel 1 if not errorlevel 2 goto CLEANUP
      goto AGAIN
 :CLEANUP
      del ente?.bat
      set $name=
   goto L8r
 :hlp
   echo SYNTAX = zz (path to directory)
 :L8r

      "Dir/b/os %1>ente2.bat" creates a smallest first, list of
      the files existing in the "given" directory. As few files
      are smaller that 0bytes we can safely assume that those
      files, if any, will be dealt with first. The first file that
      does hold data will signal ZZ to exit stage left, cleaning up
      as it goes. You should be able to use ZZ as a utility callable
      from another .bat with the directory in question as the second
      parameter. ( whatever zz \wherever )
 :L8r
               Larry
               .....In a pinch a stone ax still works.....

-!- Maximus 2.02
 ! Origin: MSDOS MAXIMUS BBS (1:343/101)

 Area: Batch Language Programming                     FI 
  Msg#: 449                                          Date: 03 Dec 96  23:33:12
  From: Denis Boyles                                 Read: Yes    Replied: No
    To: Bruce Howells                                Mark:
  Subj: Reboot.bat

Hello,

RE: echo bill gates > reboot.exe

This one obviously won't work, nice try but...

BH>=>The reason that happened is not because you actually wrote a program
BH>=>because DOS was trying to run an EXE (binary) file, even though the

BH>interested to see that in a pinch it was possible to get a
BH>batch to perform a reboot even if a reboot utility was not

You can with this:

    ECHO [ALT-234][ALT-240][ALT-240][ALT-240][ALT-240] > REBOOT.COM

Try this at the command line and then run REBOOT.COM your computer should do
a cold reboot!. Remember that the ALT sequences mean to hold down the ALT key
while typing the number present on the keypad.

Cheers,
    Denis Boyles

-!- Maximus/2 3.01
 ! Origin: Frog Hollow Port Moody BC 604-469-0264/0284 (1:153/290)

 Area: Batch Language Programming                     FI 
  Msg#: 446                                          Date: 03 Dec 96  00:54:54
  From: Rick Seferi                                  Read: Yes    Replied: No
    To: Rejean Lambert                               Mark:
  Subj: Rebooting

On 29-Nov-96 at 21:35:16, Rejean Lambert wrote to Denis Boyles
                 Subject: Re: Rebooting

 RL> Is there a way to force a *cold* boot of the system ?
 RL> Does it have something to do with the 1234 code ?

   Create COLDBOOT.COM

    echo HPS[Alt-203]>coldboot.com

  Then run it:

    COLDBOOT

  Note: THE HPS MUST BE ALLCAPS!
        The "[Alt-203]" means while holding down the [Alt] key, type
        203 on the keys on the numeric keypad (_not_ the keys at the
        top of the keyboard), and then release the [Alt] key.  Doing
        so produces ASCII character number 203 which looks something
        like a little double-line "T" character.
        This will not cause a true power off, power on cold boot.
        However, it is not a warm boot.

Or,
Save what's between the following CUT HERE lines as MAKEBOOT.BAT
Type MAKEBOOT.BAT, (you have to type the full name).
It will create COLDBOOT.COM for you.
Don't worry about the error messages.

------------------------------>CUT HERE<------------------------------
goto START
nCOLDBOOT.COM
e100  "HPS" CB

rcx
4
w
q

:START
debug<%0
------------------------------>CUT HERE<------------------------------

See ya, Bye!
-Rick

-!- Terminate 3.00/Pro
 ! Origin: My personal dead end on the Information Superhighway (1:141/455.101)

 Area: Batch Language Programming                     FI 
  Msg#: 447                                          Date: 04 Dec 96  00:26:23
  From: Colin Spice                                  Read: Yes    Replied: No
    To: Dustin Cook                                  Mark:
  Subj: Zerobyte

Hello Dustin!

Saturday November 30 1996 13:49, Dustin Cook wrote to Douglas Myers:

 DC> Here is the source code, If you want the compiled version, just
 DC> request it. rem KillZero - Program designed to target and remove zero
 DC> byte size files,

Doesn't a program compiled in Asic sort of defeat the object of trying to solve
the problem with a bit of batch file programming?

Here's one batch solution I've got of deleting Zero length files in the current
directory, it's actually 2 batch-file, the first calls the second, but it's
shorter than your uncompiled source code, of course, it's not spectacularly
fast. :)

=== Cut ===[ killzero.bat ]===
CLS
@ECHO OFF
ECHO KillZero - Will delete all Zero Length files in CURRENT directory.
ECHO.
ECHO Are you SURE you want to do this? (Y)es or (N)o ?
CHOICE /C:YN /N /T:N,15>NUL
IF ERRORLEVEL 2 GOTO ABORT
IF ERRORLEVEL 1 GOTO MAIN
:MAIN
FOR %%A IN (*.*) DO CALL KZ1.BAT %%A
GOTO END
:ABORT
ECHO Aborted!
:END
=== Cut ===

and here's the second:

=== Cut ===[ kz1.bat ]===
:: This is part of the KILLZERO.BAT to delete zero length files.
@ECHO OFF
DIR %1 | FIND "    0 " >NUL
IF NOT ERRORLEVEL 1 DEL %1
IF NOT ERRORLEVEL 1 ECHO File "%1" has been Deleted!
=== Cut ===

Regards,
 _
(_olin.     colin.spice@plightning.coracle.com

... It works better if you plug it in.
-!- GoldED 2.50+ [6011]
 ! Origin: Pacific Lightning - Maidstone, Kent UK +44-1622-201139 (2:440/7.1)

 Area: Batch Language Programming                     FI 
  Msg#: 450                                          Date: 05 Dec 96  10:10:00
  From: Horst Schaeffer                              Read: Yes    Replied: No
    To: Larry Nelson                                 Mark:
  Subj: Parsing

-=> quoting Larry Nelson to Douglas Myers (3 Dec 96) <=-

 LN>> Any ideas why   find/v "%name%"<files.lst>files.lst   is causing
 LN>> Windows to choke? ...

 DM>>   Well, I shut down the BBS and quit windows so that I was
 DM>>   working in DOS, and the above still didn't work, so now
 DM>>   you know that it doesn't even work on all DOS machines.
 DM>>   It could be because I still work with DOS 6.2 instead of 6.22.

LN>     This double redirection with Find does hang with DOS.5.
LN>     Horst droped me a line to that effect. When I told him that
LN>     it was working just fine for me He got back to me saying
LN>     that 5 was the prob.

Hi, its me..
With MS-DOS 7.0 it does not work either (talking bout upgrades...)
Looks like it only worked with certain versions of MS-DOS 6.xx

LN>     .... It was in remembering that, that caused
LN>     me sugest the "Type" routine.

Yes,...   TYPE files.lst | find/v "%name%">files.lst
seems to work with all versions.

Horst.

... Q4FM 2.11 ... horst@confusion.rmc.de

-!- FM 2.02
 ! Origin: Don't follow leaders! (2:2480/13.75)

 Area: Batch Language Programming                     FI 
  Msg#: 448                                          Date: 09 Dec 96  15:45:27
  From: Douglas Myers                                Read: Yes    Replied: No
    To: All                                          Mark:
  Subj: PUSH.BAT

This batch utility does not explore the very limits of batch
programming... in fact it's rather an ordinary use of the batch
language.  However, I like it - it does what batch files were
originally intended to do:  provide an interface between the
programs and the people using them.  Like most good batch files, it
makes a job easier.

PUSH.BAT is a manager for PKZIP.  It's not a full-fledged manager
such as SHEZ or INSPECT, but rather it manages one limited task.  If
you've ever made a temporary work directory to put together a
document or tame a batch file, then you know that the clutter in the
directory can become unmanagable.  It's convenient to be able to
"put the project away" for a few hours, or days... or whatever.

PUSH.BAT automates that task.  It gathers up all the stuff you have
strewn in your work directory and any subdirectories you've created,
stores them in the zip file you name in the c:\push directory
(saving the subdirectory structure, of course), and then cleans up
your work directory for the next project.  You can call your project
back at any time to any work directory.

You'll need PKZIP and PKUNZIP, of course, but you shouldn't need
more than you'll find in your DOS directory beyond that.  Tested
using MSDOS 6.20.

----------- PUSH.BAT ---------- cut here ----------
@echo off
goto START

        Saves and cleans work in the current directory.
        Restores on demand.  Requires PKZIP and PKUNZIP in path.

:START
if $%1==$ goto SYNTAX
if $%1==$back goto BACKOUT
goto PUSHIT

:SYNTAX
echo.
echo syntax:  PUSH [zipfile] - Zips files in the current directory
echo                           and subdirectories into c:\push.  All
echo                           files and subdirectories are removed
echo                           from the current directory.
echo.
echo          PUSH BACK     -  Lists files in c:\push.
echo                           PUSH BACK [zipfile] restores.
echo.
goto END

:PUSHIT
if not exist c:\push\*.* md c:\push
pkzip -prm c:\push\%1
echo.
dir /b c:\push
echo.
goto END

:BACKOUT
if $%2==$ goto SYNTAX2
pkunzip -d c:\push\%2
if exist c:\push\$backup$.zip del c:\push\$backup$.zip
if exist c:\push\%2 ren c:\push\%2 $backup$.zip
if exist c:\push\%2.zip ren c:\push\%2.zip $backup$.zip
goto END

:SYNTAX2
echo.
echo.
dir /b /l c:\push
echo.
echo syntax:  PUSH BACK [zipfile] - restores to current directory.
echo.
goto END

        Douglas.Myers%270-720.mdtnbbs.com

:END
--------------- PUSH.BAT ------------ cut here ---------

-!- Telegard v3.02/mL
 ! Origin: Howdy's Whistle Stop  Summerdale PA  717 732 6820 (1:270/720)

 Area: Batch Language Programming                     FI 
  Msg#: 429                                          Date: 16 Dec 96  12:37:24
  From: Gary Cooper                                  Read: Yes    Replied: No
    To: Jacin Nixon                                  Mark:
  Subj: List.com [1/2]

 >>> Part 1 of 2...

-=> Quoting Douglas Myers to Jacin Nixon <=-

 JN> Does anyone have a edit.bat that could go along /w List.com?
 JN> When your in List and you hit the "E" key it calls
 JN> "Edit.Bat"...does anyone have a nice menuing edit.bat file?

Hi Jacin:

A long time participant in BatPower (whom I haven't seen in a while)
Gerry Pareja provided the following batch file which uses the
utility GET25 (there may be a more recent release).  I'll post
Gerry's message in it's entirety from my BatPower archive.

Hope this helps!

----- Quote Mode On! -----
D Area: BatPower, The InterNational Batch Echo DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD
  Msg#: 320             Sent                         Date: 11 Nov 94  20:45:00
  From: Gerry Pareja                                 Read: Yes    Replied: No
    To: Michael Tabak                                Mark:
  Subj: Re: Pushd.bat         1/
DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD
MT>Please repost your "edit menu."  Thanks very much.

 In the past, I've posted a few versions of EDIT.BAT which I use and
 recommend as an indispensable enhancement to Vern Buerg's LIST.COM.

 I've settled on using GET25 for my own use; it gives a tremendous
 amount of flexibility, and can shorten the number of lines due to not
 requiring the "if errorlevel nnn goto xxx" in all cases.  Here's what I
 use now:

 @echo off
 :: EDIT.BAT to enhance LIST.COM
 :: G. PAREJA, Vancouver, B.C. Canada
 :: Original idea: 27 Jun 92 used Norton's BE.EXE
 :: 22 Oct 93: converted to GET.EXE
 for %%a in (dummy get) do set %%a=
 set vde=%sys%\util\vde
 :menu
 for %%a in (cls echo.) do %%a
 echo      EDIT MENU             [ESC: Quit]
 if not "%1"=="" echo      CURRENT FILE: %1
 echo      --------------------------------------
 echo      E - VDE             V - VDE (NEW FILE)
 echo      F - qFiler          K - Del *.BAK
 if not "%get%"=="}" goto get
 echo      S - VDE_ESPANOL     G - VDE_GENERIC
 echo      X - VDE 2-72        B - GWBasic
 echo      W - Word perfect    C - word Count
 echo      P - PKLITE          U - UN-PKLITE
 echo      L - WP5LOOK         M - MS-DOS EDIT
 echo      D - unDelete files  N - Nsweep
 echo      T - TRIM spaces     Y - Decode Debug script
 echo      O - POP-DBF         H - Reset date of ZIP/LZH/ARJ/etc
 echo      R - RV-Shell
 :get
 get c "  -->" /w60
 if "%get%"=="" quit
 if errorlevel 126 quit
 if "%get%"=="}" goto menu
 echo.
 if "%get%"=="B" gwbasic %1
 if "%get%"=="C" if not "%1"=="" goto wc
 if "%get%"=="D" undelete
 if "%get%"=="E" vde %1
 if "%get%"=="F" qf
 if "%get%"=="G" vde %1 %vde%\generic.txt ;generic.vdk
 if "%get%"=="H" for %%a in (call pause) do %%a rv /r %1
 if "%get%"=="K" goto delbak
 if "%get%"=="L" e:\wp51\wp5look %1
 if "%get%"=="M" qbasic /editor %1
 if "%get%"=="N" nswp
 if "%get%"=="O" d:\popdbf\popdbf /L%dbdr%\db4\babc3 /e1024 /p
 if "%get%"=="P" goto pklite
 if "%get%"=="R" rvs.exe %1
 if "%get%"=="S" vde %1 ;spanfren.vdg
 if "%get%"=="T" goto trim
 if "%get%"=="U" goto unpk
 if "%get%"=="V" vde
 if "%get%"=="W" wp.exe %1
 if "%get%"=="X" vde %1 ;olx.vdi
 if "%get%"=="Y" if not "%1"=="" goto debug
 quit

 :delbak
 echo.
 if exist *.bak echo Done.
 del *.bak
 goto pause

:trim
if "%1"=="" quit
echo TRIMMING %1 ...
trim -r %1 >trimmed

 >>> Continued to next message...

-!- FMail/386 1.0g
 ! Origin: Tardis Control (506)849-7362, USR V.34/V.FC! (1:255/13)

 Area: Batch Language Programming                     FI 
  Msg#: 430                                          Date: 16 Dec 96  12:48:54
  From: Gary Cooper                                  Read: Yes    Replied: No
    To: Jacin Nixon                                  Mark:
  Subj: List.com [2/2]

 >>> Part 2 of 2...

echo Done.
get c "Do you want to replace %1 with TRIMMED? [y,N] ->" /w30 /b
if not "%get%"=="Y" quit
copy trimmed %1 >nul
copy trimmed c:\temp\trimmed >nul
del trimmed
echo Done.  "Trimmed" file also copied to C:\TEMP.
goto pause

 :debug
 echo.
 echo CHECK IF SCRIPT LOOKS O.K.
 echo or else system could hang!
 echo --------------------------
 get c "Press Enter to see, Esc to quit: " /w30
 if errorlevel 126 quit
 more <%1
 echo IS IT O.K. TO DECODE?
 ECHO ---------------------
 echo      Y - Yes
 echo    * N - NO!
 get c "  -->" /w30
 if not "%get%"=="Y" quit
 debug <%1
 goto pause

 :wc
 wc %1
 goto pause

 :unpk
 set unpk=-x
 :pklite
 echo.
 pklite %unpk% %1
 set unpk=

 :pause
 echo.
 get c "Press any key to exit ..." /w60

 :end

 In normal use, only the first 2 lines (4 options) of the menu are
 shown; these are my most frequently used options.  If, however, I press
 ENTER, %GET% is set to } and the rest of the menu is displayed.

 My most common use is, of course, to load an editor from LIST.  That's
 why option E loads my favorite editor (VDE); since E calls EDIT.BAT, 2
 quick E's pressed from List's interface load the current file into VDE.
 If the cursor is pointing to a directory, then VDE loads with a blank
 screen.  WordPerfect works the same way.

 Notice also, that only a few functions require a "goto"; those which do
 then "goto pause" to prevent the screen message from disappearing too
 fast.

 The command "Quit" goes to a batch file in my RAM disk created each day
 by a simple statement: REM>%RAM%\QUIT.BAT.  It does absolutely nothing,
 so the current batch simply quits.

 A couple of the other statements will be obscure unless you understand
 that GET sets _both_ an errorlevel and a variable (%get%).  "if
 errorlevel 126 quit" means "if either Esc or space-bar were pressed,
 quit".  If "%get%"=="" means if it timed out (no key was pressed).

 I hope you find this useful.

 Gerry


 * OLX 2.1 TD * G. Pareja * Vancouver * B.C. * Canada *

-!- Maximus 2.02
 ! Origin: VKUG/VPCC Batpower Echo - Richmond, BC (1:153/151)
----- Quote Mode Off! -----

After I prepared this message I read that Bat Lang found an
earlier release of Gerry's EDIT.BAT.  I'll forward this one
along anyway in case you can't find WAITKEY.

TTYL

Gary (T1'nNB)

... Diplomacy's the art of letting someone else have your way
-!- FMail/386 1.0g
 ! Origin: Tardis Control (506)849-7362, USR V.34/V.FC! (1:255/13)

 Area: Batch Language Programming                     FI 
  Msg#: 410                                          Date: 17 Dec 96  23:53:59
  From: Gary Cooper                                  Read: Yes    Replied: No
    To: Richard Epling                               Mark:
  Subj: looking for..

-=> Quoting Richard Epling to Joe Carter <=-

 JC> I'm looking for a nice little utility for use in my batch
 JC> files, to create 0-byte files <semaphore files for the BBS.

 RE> The easiest way I've found to do this is the REM command. If
 RE> you pipe REM to a filename it creates a 0-byte file with that
 RE> name. For example,  REM > INUSE.DAT

 RE> would create a 0-byte file named INUSE.DAT. Hope this is
 RE> useful.

Hi Richard:

FYI, your method will not work under all conditions.  I've observed
that leaving a space after the REM and before the ">" symbol, will
cause the technique to fail from a DOS box in Windows.  For example:

Both:

rem>test1.sem

and

rem> test2.sem

Will produce 0 byte files, whereas either:

rem >test3.sem

or

rem > test4.sem

Will fail to produce any file.  While all methods will work directly
from MS-DOS (tested with V6.2).  I usually recommend the "no space"
method as it results in slightly smaller batch files.

One more reason not to use Windows!  ;-)

Hope this helps!

TTYL

Gary (T1'nNB)

... Patience:  A form of desperation disguised as a virtue.
-!- FMail/386 1.0g
 ! Origin: Tardis Control (506)849-7362, USR V.34/V.FC! (1:255/13)

 Area: Batch Language Programming                     FI 
  Msg#: 439                                          Date: 21 Dec 96  07:36:58
  From: Vernon Frazee                                Read: Yes    Replied: No
    To: Danny Shaffer                                Mark:
  Subj: Using a filename list

                                                      21-Dec-1996 07:36
    Hello Danny,

    On 16-Dec-96 at 21:03:01, "All" and "Danny Shaffer" were discussing
    "Using a filename list":

DS> Hey all, Is it possible to use the output of a DIR *.ZIP /F /S >list
DS> command, to maek it do stuff to each file? What I wanna do is use
DS> that to add a file to all the zip files in my file area on my bbs..
DS> I know the
DS>   FOR %%a in (*.ZIP) do pkzip %%a addthis.txt
DS> will do it for all the zip's in the directory.. But I was wanting to
DS> do it from the list..
DS> I wrote a little C program to take each line from the dir /f /s and
DS> pass it to a batch file, but thats not very elegant.. :)
DS> Any help appreciated

    I'm not sure of exactly what you're after but the following will
    create a ready-to-go BATch file named ZIP'EM.BAT with every ZIP
    file in your current directory listed within it:

      for %x in (*.zip) do echo pkzip -ex %x addthis.txt>>zip'em.bat

    Note: If your ADDTHIS.TXT file is in another directory, you'd need
          to insert the correct "d:\path\" directly in front of the
          ADDTHIS.TXT filename:

      for %x in (*.zip) do echo pkzip -ex %x d:\path\addthis.txt ...
                                             ^^^^^^^^
 -- NetMail: 1:135/71.17    E-Mail: vernon.frazee@sunshine.com     -vjf-
 -- Main BossNode: SOX! BBS * (305) 821-3317 * Hialeah FL USA * 1:135/71
-!- Terminate 4.00/Pro
 ! Origin: Vern's Point * Hollywood Lakes, Florida * USA * (1:135/71.17)

 Area: Batch Language Programming                     FI 
  Msg#: 442             Rec'd                        Date: 22 Dec 96  19:46:00
  From: Bob Morton                                   Read: Yes    Replied: No
    To: Bat Lang                                     Mark:
  Subj: Del *.* /y

BL> Ha!  At last you made known your requirement.  {^; Since the nul device BL>
is omnipresent, it will be found in any dir.  Hence:

BL> if exist c:\subd1\nul echo YES!

BL> should work for you.  Give it a try.  Happy HOLYDAYS! and Good

Bat, this does not always work in networked environments--in fact, seldom does.
 Hence, this recommendation should always include a
caveat to that effect (unless it is already clear the inquirer
operates only in a standalone environment).

Is this in BAT-FAQ?

-!- GEcho 1.11+
 ! Origin: Flamingo BBS, Melbourne, FL V34+ (407)242-8184 (1:374/46)

 Area: Batch Language Programming                     FI 
  Msg#: 445                                          Date: 24 Dec 96  08:58:00
  From: David Roper                                  Read: Yes    Replied: No
    To: Chris Hanna                                  Mark:
  Subj: MODEM

CH>> Hello. I've been fiddling around with making a Batch file Comm program. I
can
  >>send commands to my modem (which is on Com2) by using the command:
CH>>                           ECHO ATZ > COM2
CH>> Just for example. Yet after initialization I use the command:
CH>>                           ECHO ATxxx-xxx-xxxx^M > COM2
CH>>to try and dial. Yet the modem just clicks once and dies.
CH>> Any ideas???

    Well, for one thing, the "^M" for the carriage return is the way
    many of the comm programs "visualize" the carriage return, the
    ASCII character 13.  Yet in BATCH programming, the ^M is simply
    two characters, "^" and "M" and they do not get translated like
    you wanted.  Keep trying.... and good luck with your project. ;-)

     _____oOOo_/00\_oOOo_____         DavidRoper@USA.Net
  1996         \__/        201 Winding Brook Dr, Garner NC 27529, USA

-!- FLAME v1.1
 ! Origin: Full Internet Access $15.00, (919) 779-6674 or MMS.NET (1:151/102)

 Area: Batch Language Programming                     FI 
  Msg#: 445                                          Date: 26 Dec 96  17:12:13
  From: Vernon Frazee                                Read: Yes    Replied: No
    To: Perry Lorier                                 Mark:
  Subj: If Exist Emsxxxxx

                                                      26-Dec-1996 17:12
    Hello Perry,

    On 25-Dec-96 at 17:22:39, "Denis Boyles" and "Perry Lorier" were
    discussing "If Exist Emsxxxxx":

PL> If you look at MSD and goto "Device Drivers" then you can see the
PL> names of all the loaded drivers.  You can use it to do things like
PL> look for MSC0001 to look for a CDROM for example.

    Or, you could do a:

      mem/d|find "Device Driver"

    at the DOS prompt to get the same listing.  <g>

 -- NetMail: 1:135/71.17    E-Mail: vernon.frazee@sunshine.com     -vjf-
 -- Main BossNode: SOX! BBS * (305) 821-3317 * Hialeah FL USA * 1:135/71
-!- Terminate 4.00/Pro
 ! Origin: Vern's Point * Hollywood Lakes, Florida * USA * (1:135/71.17)

 Area: Batch Language Programming                     FI 
  Msg#: 430                                          Date: 29 Dec 96  23:55:18
  From: Larry Nelson                                 Read: Yes    Replied: No
    To: Andy Guess                                   Mark:
  Subj: %0 echo %%a

         ANDY:

 Subject: %0 ECHO %%A



 AG> I just discovered something I never knew before from DOALL.BAT.
 AG> I tested it out, and here is an example batch file.

 AG> @echo off
 AG> for %%a in (1 2 3 a b c A B C) do %1 %2

 AG> Call this batch file with:

 AG> %0 ECHO %%A

 AG> and you get:

 AG> 1
 AG> 2
 AG> 3
 AG> a
 AG> b
 AG> c
 AG> A
 AG> B
 AG> C

 AG> So the FOR command actually "read" the %%A off the command line.

 AG> Cool!

      Indeed! Exelent observation and might I add, one of the
      first pieces of Batch research I have seen here in some
      weeks. I didn't know that For could be feed from a command
      line parameter. Now he question becomes, to what do we
      apply this new bit of leverage. Hmmmm.....
 :L8r
               Larry
               .....In a pinch a stone ax still works.....


-!- Maximus 2.02
 ! Origin: MSDOS MAXIMUS BBS (1:343/101)

 Area: Batch Language Programming                     FI 
  Msg#: 434                                          Date: 03 Jan 97  05:08:00
  From: Vernon Frazee                                Read: Yes    Replied: No
    To: Ian Harding                                  Mark:
  Subj: Path (1 of 2)

                                                       3-Jan-1997 05:08
    Hello Ian,

    On 31-Dec-96 at 22:51:14, "Mike Hill" and "Ian Harding" were
    discussing "Path":

MH> If you have a good valid reason for including excess directories in
MH> your path, would you please explain to me?

IH> It had a great deal to do with my BBS.......I have all my BBS
IH> directories in the path for mainly ease of use, and some of the
IH> programs you basically need them in the path for it to work
IH> properly.....I guess that I could make .bat files that do everything
IH> for me, but I think that my be getting a little extreme.

    I believe I've already responded with a how to solve the problem by
    using the "SET PATH=" command in CONFIG.SYS but here's another way.

    Let's say you wanted ALL of the following directories in your PATH:

      C:\BAT          - General BATch files
      C:\UTIL         - General Utilities
      C:\QE           - QEdit
      C:\DOS          - MS-DOS
      C:\SCAN         - McAffee's SCAN
      C:\BGFAX        - BGFAX
      C:\PCB          - PCBoard BBS main directory
      C:\PCB\BAT      - BATch files for PCBoard
      C:\PCB\UTIL     - General utilities for PCBoard
      C:\PCB\UTIL\ARC - ARC.EXE and related files
      C:\PCB\UTIL\ARJ - ARJ.EXE and related files
      C:\PCB\UTIL\HYP - HYPER.EXE and related files
      C:\PCB\UTIL\LZH - LHA.EXE and related files
      C:\PCB\UTIL\PAK - PKPAK/PKUNPAK.EXE and related files
      C:\PCB\UTIL\RAR - RAR.EXE and related files
      C:\PCB\UTIL\SQZ - SQZ.EXE and related files
      C:\PCB\UTIL\ZIP - PKZIP/PKUNZIP.EXE and related files
      C:\PCB\UTIL\ZOO - ZOO.EXE and related files

    If you tried to set the PATH in your AUTOEXEC.BAT with the line:

      PATH=C:\BAT;C:\UTIL;C:\QE;C:\DOS;C:\SCAN;C:\BGFAX;C:\PCB;...
           C:\PCB\BAT;C:\PCB\UTIL;C:\PCB\UTIL\ARC;C:\PCB\UTIL\ARJ;...
           C:\PCB\UTIL\HYP;C:\PCB\UTIL\LZH;C:\PCB\UTIL\PAK;...
           C:\PCB\UTIL\RAR;C:\PCB\UTIL\SQZ;C:\PCB\UTIL\ZIP;...
           C:\PCB\UTIL\ZOO

    (that's one continuous line), you'd only end up with the following
    in your PATH:

      PATH=C:\BAT;C:\UTIL;C:\QE;C:\DOS;C:\SCAN;C:\BGFAX;C:\PCB;...
           C:\PCB\BAT;C:\PCB\UTIL;C:\PCB\UTIL\ARC;C:\PCB\UTIL\ARJ;...
           C:\PCB\UTIL\HYP

    In other words, you'd be missing all of the following:

           ;C:\PCB\UTIL\LZH;C:\PCB\UTIL\PAK;C:\PCB\UTIL\RAR;...
           C:\PCB\UTIL\SQZ;C:\PCB\UTIL\ZIP;C:\PCB\UTIL\ZOO

    because COMMAND.COM can only handle up to 127 characters at a time.

    One way around this problem is with the DOS SUBST command.  It lets
    lets you to associate a path with a virtual drive letter and then
    use that virtual drive letter in DOS commands.  This means you could
    use just the virtual drive letter (and a backslash) in the PATH
    instead of the full 'real' pathname.

[...continued in next message...]

 -- NetMail: 1:135/71.17    E-Mail: vernon.frazee@sunshine.com     -vjf-
 -- Main BossNode: SOX! BBS * (305) 821-3317 * Hialeah FL USA * 1:135/71
-!- Terminate 4.00/Pro
 ! Origin: Vern's Point * Hollywood Lakes, Florida * USA * (1:135/71.17)

 Area: Batch Language Programming                     FI 
  Msg#: 435                                          Date: 03 Jan 97  05:11:07
  From: Vernon Frazee                                Read: Yes    Replied: No
    To: Ian Harding                                  Mark:
  Subj: Path (2 of 2)

                                                       3-Jan-1997 05:11

[...continued from last message...]

    Back to our example.  Let's say you have a 2GB hard drive split into
    four partitions: C:, D:, E:, and F:, and a CD-ROM drive as drive G:.
    Let's also say that we only want to use SUBST to assign virtual
    drive letters to the twelve C:\PCB... directories.

    First we need to alter the LASTDRIVE line in CONFIG.SYS to read:

      LASTDRIVE=S

    Make the following changes in AUTOEXEC.BAT:

      PATH=C:\BAT;C:\UTIL;C:\QE;C:\DOS;C:\SCAN;C:\BGFAX
      SUBST H: C:\PCB
      SUBST I: C:\PCB\BAT
      SUBST J: C:\PCB\UTIL
      SUBST K: C:\PCB\UTIL\ARC
      SUBST L: C:\PCB\UTIL\ARJ
      SUBST M: C:\PCB\UTIL\HYP
      SUBST N: C:\PCB\UTIL\LZH
      SUBST O: C:\PCB\UTIL\PAK
      SUBST P: C:\PCB\UTIL\RAR
      SUBST Q: C:\PCB\UTIL\SQZ
      SUBST R: C:\PCB\UTIL\ZIP
      SUBST S: C:\PCB\UTIL\ZOO
      PATH=%PATH%;H:\;I:\;J:\;K:\;L:\;M:\;N:\;O:\;P:\;Q:\;R:\;S:\

    And when you reboot you'll have the following 97 character PATH:

      PATH=C:\BAT;C:\UTIL;C:\QE;C:\DOS;C:\SCAN;C:\BGFAX;...
           H:\;I:\;J:\;K:\;L:\;M:\;N:\;O:\;P:\;Q:\;R:\;S:\

    Say you now type the command:

      ZOO

    from the root directory of drive C:.  DOS would search the PATH and
    find it in the root directory of virtual drive S: -- which is really
    directory C:\PCB\UTIL\ZOO.

    Cool eh?  <g>

    Notes: (1) To see a listing of the names of the virtual drives in
               effect, you can type:

                 SUBST

           (2) While you are on one of the virtual drives, the following
               undocumented command will display the 'real' pathname:

                 TRUENAME

               For example, if you were on virtual drive S:, the "DIR"
               command would display something like:

                  Volume in drive S is DISK0_VOL1
                  Volume Serial Number is 203E-A1F5
                  Directory of S:\

                 .            <DIR>         01-03-97   3:54a
                 ..           <DIR>         01-03-97   3:54a
                 <...snip...>
                        10 file(s)        221,184 bytes
                                      119,551,872 bytes free

               and the "TRUENAME" command:

                 C:\PCB\UTIL\ZOO

           (3) Do not use the SUBST command when Windows is running.
               (You can use it BEFORE Windows is loaded, just not while
               Windows is loaded).

           (4) For more info on the SUBST command, type:

                 HELP SUBST

 -- NetMail: 1:135/71.17    E-Mail: vernon.frazee@sunshine.com     -vjf-
 -- Main BossNode: SOX! BBS * (305) 821-3317 * Hialeah FL USA * 1:135/71
-!- Terminate 4.00/Pro
 ! Origin: Vern's Point * Hollywood Lakes, Florida * USA * (1:135/71.17)

 Area: Batch Language Programming                     FI 
  Msg#: 439                                          Date: 03 Jan 97  06:25:00
  From: Karl Springer                                Read: Yes    Replied: No
    To: Kurt J. Tischer                              Mark:
  Subj: Time/Date Stamps

KJT>        Is there a way to use the DOS copy command to create
   > a simple batch file to update the time & date stamp of a
   > file, or files to the current date & time?

Try the following demo batch file:

:: STAMP.BAT
@ echo off
  cls
    if "%1" == "" goto MSG
  dir %1
  for %%a in (%1) do copy /b /v %%a +,, > nul
  dir %1
  goto X

:MSG
  echo.
  echo     What:  Stamps file(s) with current date and time
  echo.
  echo   Syntax:  STAMP FileName.Ext
  echo.
  echo     Note:  DOS wildcards * and ? are OK
  echo.

:X


Karl   karl.springer@tsbbs.com

... Reactionary Virus: Deletes all files with dates after 01/01/80.



-!- PCBoard (R) v15.3/10
 ! Origin: Fidonet * West Los Angeles BBS (1:102/635)

 Area: Batch Language Programming                     FI 
  Msg#: 444                                          Date: 03 Jan 97  13:08:00
  From: Gerry Danen                                  Read: Yes    Replied: No
    To: MARK RUHLAND                                 Mark:
  Subj: Batch File Book of Interest

MR> Well, one example that is in there is WINDOWS.BAT, which "saves the current
MR> search path as OLD_PATH environment entry."

MR> @echo off
MR> set old_path=%path%
MR> path c:\windows;c:\excel;c:\winword;%path%
MR> win
MR> path %old_path%
MR> set old_path=

I recommend using an env name of 4 chars or less.  If your path is at
its 127-char limit, you WILL LOSE a part of it when you restore from
"old_path".  I personally us $p or something.

 * OLX 2.1 TD * We all live in a yellow subroutine.

-!- MajorBBS v6.25
 ! Origin: C+Net BBS * Edmonton, AB Canada * 403-477-9545 (1:342/1017)

 Area: Batch Language Programming                     FI 
  Msg#: 430                                          Date: 05 Jan 97  10:40:06
  From: Vernon Frazee                                Read: Yes    Replied: No
    To: Paul Elliott                                 Mark:
  Subj: Stripping Lines

                                                       5-Jan-1997 10:40
    Hello Paul,

    On 02-Jan-97 at 08:17:00, "All" and "Paul Elliott" were discussing
    "Stripping Lines":

PE> I'm just wondering if its possible to strip the bottom say 3 lines
PE> from a text file by using a batch file?

    Like I was just telling Jim Patterson, I don't have much time this
    morning so am hoping a Q&D (Quick and Dirty) will suffice.

      @echo off
      :    Name: DELLAST3.BAT
      : Purpose: Deletes the last 3 lines of the specified text file.
      :Requires: EDLIN (somewhere in the PATH is fine)
      :  Syntax: DELLAST3 filename
       if (%1)==() goto End
       echo Deleting the last 3 lines from file "%1" ...
       echo #;-1d;e>~.tmp
       for %%x in (1 2 3) do edlin %1<~.tmp>nul
       del ~.tmp
       echo Done.
      :End

 -- NetMail: 1:135/71.17    E-Mail: vernon.frazee@sunshine.com     -vjf-
 -- Main BossNode: SOX! BBS * (305) 821-3317 * Hialeah FL USA * 1:135/71
-!- Terminate 4.00/Pro
 ! Origin: Vern's Point * Hollywood Lakes, Florida * USA * (1:135/71.17)

 Area: Batch Language Programming                     FI 
  Msg#: 443                                          Date: 05 Jan 97  23:25:00
  From: Michael Marquart                             Read: Yes    Replied: No
    To: Jim Patterson                                Mark:
  Subj: Batch file needed.

 ~~ Jim Patterson said to All ~~
 ~~ Regarding Batch file needed. ~~
 ~~ on 02 Jan 97  18:47:00 ~~

 Hi Jim!

 JP> I have scanned lightly thought the past month's posting in
 JP> this conference and believe myself woefully short on the kind of
 JP> expertise i see here.

 Hang around, I learnt most of what I know about Batches right here, and
 it is a friendly and productive atmosphere!

 JP> However, I am reposting from another BBS a note
 JP> I made which got zippo.none response:

 JP> I have File.A and I want to compare it line-by-line to File.b.
 JP> -- or more specifically each line of File.A to every line
 JP> of File.B --

 JP> Any Hit of a line which exists in BOTH files should branch to
 JP> a routine which writes an output line to File.C.

 Here is my solution which I arrived at by modifying an existing batch of
 mine:

 ::Call_me_what_you_will.bat ================================================
 ::
 :: Tested with MSDOS V6.22 and it uses Qbasic.
 ::
 @echo off
 if "%1"=="" echo.
 if "%1"=="" echo SYNTAX: %0 [Drive:][\path\]File1 [Drive:][\path\]File2
 if "%1"=="" echo.
 if "%1"=="" echo    This batch file reads File1 (line by line) and if each
 if "%1"=="" echo    line in File1 appears in File2, it is written out to a
 if "%1"=="" echo    file called DUPES.001 in the current directory.
 if "%1"=="" echo.
 if "%1"=="" echo    DUPES.001 will not appear if there are no matches
 if "%1"=="" goto end
 echo OPEN "%1" FOR INPUT AS #255>!_~_!.000
 echo OPEN "dupes.001" FOR OUTPUT AS #2>>!_~_!.000
 echo WHILE NOT EOF(255)>>!_~_!.000
 echo line input #255, n$>>!_~_!.000
 echo n$=rtrim$(ltrim$(n$)):if n$="" goto 10 else ?:? n$;>>!_~_!.000
 echo OPEN "%2" FOR INPUT AS #1>>!_~_!.000
 echo DO WHILE NOT EOF(1): LINE INPUT #1, a$>>!_~_!.000
 echo If rtrim$(ltrim$(a$))=n$ THEN ? #2, n$:?,"Found";>>!_~_!.000
 echo loop: close #1:>>!_~_!.000
 echo 10:>>!_~_!.000
 echo WEND>>!_~_!.000
 echo ?:KILL "!_~_!.000">>!_~_!.000
 echo CLOSE>>!_~_!.000
 echo SYSTEM>>!_~_!.000
 qbasic /run !_~_!.000
 copy dupes.001+,,>nul
 :end
 ::==========================================================================

 Doing it in vanilla batch would be slow, and even more disk intensive than
 the above.  I recommend a disk cache, or a ram drive, for faster results on
 a large File2.  File1 is only processed once, while File2 is processed many
 times.

 Here is a vanilla batch version for comparison;  however, inappropriate blank
 lines can cause it to fail.

 :: Call_me_what_you_will.bat ================================================
 ::
 :: Tested with MSDOS V6.22 and it uses Qbasic.
 ::
 @echo off
 if "%1"=="" goto syntax
 if exist Dupes.001 del Dupes.001
 echo set file=%%4>enter.bat
 copy %1 !_~_!.001>nul
 echo.>>!_~_!.001
 :loop
 type !_~_!.001|date|find /i "enter">!_~_!.bat
 call !_~_!.bat
 if "%file%"=="" goto done
 type %2|find "%file%">>Dupes.001
 type !_~_!.001|find /v "%file%">!_~_!.001
 goto loop
 :done
 copy Dupes.001+,,>nul
 set file=
 for %%a in (enter.bat !_~_!.bat !_~_!.001) do del %%a
 goto end
 :syntax
 echo.
 echo SYNTAX: %0 [Drive:][\path\]File1 [Drive:][\path\]File2
 echo.
 echo         This batch file reads File1 (line by line) and if each
 echo         line (word) in File1 appears in File2, it is written out
 echo         to a file called DUPES.001 in the current directory.
 echo.
 echo         DUPES.001 will not appear if there are no matches
 :end
 ::===========================================================================


 Regards                        _!_
                Mic         -----o-----
                                " "

-!-
 ! Origin: Melbourne PC User Group  +61-3-9699-6788 (3:632/309)

 Area: Batch Language Programming                     FI 
  Msg#: 448                                          Date: 11 Jan 97  17:11:04
  From: Gerry Pareja                                 Read: Yes    Replied: No
    To: All                                          Mark:
  Subj: Batch resources on WWW

 Hi, all.

 I know it's probably regarded as sacrilege by some folks around here,
 but I've found some useful stuff about MS-DOS batch language on the
 World Wide Web.

 The following two URL's will get you started.  The first one mentioned
 allows you to download all the tips in one fell swoop, as a ZIP file
 whose contents you can read online.

                     "A Web Book in Progress"
                     http://www.maem.umr.edu/~batch/

 This is a collection of essays, notes, etc. - all of them work in
 progress.  The subject matter is DOS batch files, their uses, their
 gotchas, "how to do it", and a few impossibilities.

 -tdavis@umr.edu

                                 * * * *

 The other one is:

      http://www.infi.net/~wtnewton/batch/index.html

      (by W. Newton; links to other stuff as well)


                                 * * * *

 Bye for now,


 Gerry


 * OLX 2.1 TD * G. Pareja * Internet: 73627.3210@compuserve.com

-!- Maximus 2.02
 ! Origin: VKUG/VPCC Batpower Echo - Richmond, BC (1:153/151)

 Area: Batch Language Programming                     FI 
  Msg#: 439                                          Date: 13 Jan 97  06:48:48
  From: Vernon Frazee                                Read: Yes    Replied: No
    To: Andy Fountain                                Mark:
  Subj: removing blank lines

                                                      13-Jan-1997 06:48
    Hello Andy,

    On 10-Jan-97 at 13:33:00, "Vernon Frazee" and "Andy Fountain" were
    discussing "removing blank lines":

AF> Thanks very much for the batch file that removes blank lines.  It
AF> works great.

    You're more than welcome.

AF> Is there a way though to modify it so that it will remove all lines
AF> with say the last 78 spaces or above blank.  In other words all
AF> lines will be removed even if there are 2 characters 1 or no
AF> characters occupying the first 2 1 or no spaces on the line. thanks
AF> very much for the assistance.

    If I'm reading your request correctly, all it would take would be to
    change the 37th line in RBL.BAT from:

      echo IF NOT x$="" THEN>>~tmptmp~.bas

    to:

      echo IF NOT mid$(x$,3,len(x$))="" THEN>>~tmptmp~.bas
                  ~~~~~  ~~~~~~~~~~~
    (The change is underlined).

 -- NetMail: 1:135/71.17    E-Mail: vernon.frazee@sunshine.com     -vjf-
 -- Main BossNode: SOX! BBS * (305) 821-3317 * Hialeah FL USA * 1:135/71
-!- Terminate 4.00/Pro
 ! Origin: Vern's Point * Hollywood Lakes, Florida * USA * (1:135/71.17)

 Area: Batch Language Programming                     FI 
  Msg#: 448                                          Date: 21 Jan 97  09:02:00
  From: Bruce Roeser                                 Read: Yes    Replied: No
    To: Andi Taylor                                  Mark:
  Subj: EDLIN

 -=> Quoting Andi Taylor to All <=-

Andi,

 AT> Does anybody know of a program that does the same job as EDLIN but
 AT> runs under DOS v7?? I downloaded EDLIN from the Microsoft site but it
 AT> wasn't compatible. Thanx in advance!

  By "not compatible" do you mean it griped at the DOS version?  If so,
  try running SETVER and setting the version to a compatible level.
  I.E., if the version of EDLIN.COM (EXE?) you downloaded is for DOS
  6.22, do the following:

  1) Run SETVER as follows:

    SETVER EDLIN.COM 6.22   ;Or if it's EDLIN.EXE use that name instead

  2) Make sure SETVER.EXE is loaded in CONFIG.SYS:

    DEVICE[HIGH]=C:\DOS\SETVER.EXE

- Bruce

... "It compiled?  The first screen came up?  Ship it!" -- Bill Gates
-!- GEcho 1.20/Pro
 ! Origin:  (1:363/319)

 Area: Batch Language Programming                     FI 
  Msg#: 448                                          Date: 01 Feb 97  07:51:00
  From: Richard Epling                               Read: Yes    Replied: No
    To: Joey Ripley                                  Mark:
  Subj: The DOS FIND Command

JR>1) Scan the specified file for a text string.
JR>2) If the text string exists, jump to a given label in the batch file.
JR>3) If the text string does not exists, jump to another label.

Basically you need to check the errorlevel generated by FIND. If the
search was successful and at least one match was found it gives an
errorlevel of 0. If it was successful and no matches were found it gives
an errorlevel of 1 and if the search was not successful (i.e. say you
tell it the wrong filename or the file doesn't exist) it gives an
errorlevel of 2. You need to check them in reverse order, though. So, if
you're not worried about the third possibility, you'd check for 1 and
then for 0. Like this;

@ECHO OFF
FIND /I "ANY TEXT" MYFILE.TXT
IF ERRORLEVEL 1 GOTO NOT_FOUND
GOTO FOUND
:NOT_FOUND
REM Do whatever should be done if it isn't found
GOTO END
:FOUND
REM Do whatever happens if it is found
GOTO END
:END

Above the "IF ERRORLEVEL 1" will result in it going to not found if it
gives an errorlevel 1 or 2. If it passes that then the errorlevel must
be 0 so it goes to the found part. If you want to test for errorlevel 2,
do so prior to the test for errorlevel 1 and have go to an error loop or
whatever. Those are the only three errorlevels FIND is supposed to give.

Richard
  SLMR 2.1a   I'm in shape ... round's a shape isn't it?
-!- Alexi/Mail 2.02b (#10000)
 ! Origin: Mr. Boogety's BBS (1:203/735)

 Area: Batch Language Programming                     FI 
  Msg#: 430                                          Date: 18 Jan 97  16:43:44
  From: Michael Marquart                             Read: Yes    Replied: No
    To: Michael Blackett                             Mark:
  Subj: File Renaming...

 ~~ Michael Blackett said to All ~~
 ~~ Regarding File Renaming... ~~
 ~~ on 15 Jan 97  20:48:56 ~~

 Hi Mike!

 MB> I have about 30-40 icon files, and would like to rename them to
 MB> something like:
 MB> ICON0000.ICO
 MB> ICON0001.ICO
 MB> Also, if possible, to keep the alphabetical order in the numbering
 MB> system.
 MB> ANIMAL.ICO         ICON0000.ICO
 MB> BAT.ICO            ICON0001.ICO
 MB> etc

 Here's a quick and dirty solution for you:

 ::Call_me_what_you_will.bat ================================================
 ::
 :: Tested with MSDOS V6.22 and it uses Qbasic.
 ::
 :: Takes sorted dirlist of *.ico and renames them from
 :: icon0001.ico to iconxxxx.ico
 ::
 @echo off
 dir *.ico /o:n /b>!_~_!.001
 echo OPEN "!_~_!.001" FOR INPUT AS #255:a=0>!_~_!.000
 echo WHILE NOT EOF(255)>>!_~_!.000
 echo line input #255, n$:a=a+1>>!_~_!.000
 echo number$=RIGHT$("0000"+ RIGHT$(STR$(a), LEN(STR$(a))-1), 4)>>!_~_!.000
 echo NAME n$ AS "icon"+number$+".ico">>!_~_!.000
 echo WEND>>!_~_!.000
 echo CLOSE>>!_~_!.000
 echo SYSTEM>>!_~_!.000
 qbasic /run !_~_!.000
 del !_~_!.*>nul
 :end
 ::==========================================================================

 Just execute it in the directory with all the *.ICO files.  Enjoy.  :)

 Regards                        _!_
                Mic         -----o-----
                                " "

-!-
 ! Origin: Melbourne PC User Group  +61-3-9699-6788 (3:632/309)

 Area: Batch Language Programming                     FI 
  Msg#: 442                                          Date: 04 Feb 97  18:12:00
  From: Roy Reed                                     Read: Yes    Replied: No
    To: Scott Fairclough                             Mark:
  Subj: once a day

  Scott-
     Here is a real simple "do_once_a_day.bat".  We retained a prior
  date and compare it with the current date.  If different, we must
  be at a new day, so we do the special stuff, and store the new date
  for tomorrow's comparison.  If the dates are the same, we believe
  we have already done the special stuff, so we just exit.  Simple.
  --------------------------------------------------------
  @echo off
  ver|date|find /i "current">c:\dos\2dazdate
  fc c:\dos\2dazdate c:\dos\keepdate|find /i "no diff">nul
  if errorlevel 2 goto bigdiff
  if errorlevel 1 if not errorlevel 2 goto diff
  if errorlevel 0 if not errorlevel 1 goto nodiff
  :diff
  echo seeing as dates are different, will do today's now
  c:\ra\icebank\icebank.exe /m
  copy c:\dos\2dazdate c:\dos\keepdate>nul
  goto end
  :bigdiff
  echo something abnormal has happened - please try again when ready
  goto end
  :nodiff
  echo no difference in dates means already done once today
  :end
  del c:\dos\2dazdate>nul
  --------------------------------------------------------
      Roy

-!- PCBoard (R) v15.3/M 25
 ! Origin: The GIFfer BBS, 75+gig, (813)969-2761 (1:377/50)

 Area: Batch Language Programming                     FI 
  Msg#: 433                                          Date: 11 Feb 97  06:47:03
  From: Vernon Frazee                                Read: Yes    Replied: No
    To: Benjamin L Mcgee                             Mark:
  Subj: CHOICE COMMAND


BM> @ECHO OFF
BM> CHOICE Press a number /C1234567890
BM> IF ERRORLEVEL 10 IF NOT ERRORLEVEL 11 SET NUMBER=Zero
BM> IF ERRORLEVEL 9 IF NOT ERRORLEVEL 10 SET NUMBER=Nine
BM> IF ERRORLEVEL 8 IF NOT ERRORLEVEL 9 SET NUMBER=Eight
BM> IF ERRORLEVEL 7 IF NOT ERRORLEVEL 8 SET NUMBER=Seven
BM> IF ERRORLEVEL 6 IF NOT ERRORLEVEL 7 SET NUMBER=Six
BM> IF ERRORLEVEL 5 IF NOT ERRORLEVEL 6 SET NUMBER=Five
BM> IF ERRORLEVEL 4 IF NOT ERRORLEVEL 5 SET NUMBER=Four
BM> IF ERRORLEVEL 3 IF NOT ERRORLEVEL 4 SET NUMBER=Three
BM> IF ERRORLEVEL 2 IF NOT ERRORLEVEL 3 SET NUMBER=Two
BM> IF ERRORLEVEL 1 IF NOT ERRORLEVEL 2 SET NUMBER=One
BM> ECHO You pressed %NUMBER% didn't you?
BM> SET NUMBER=

    FWIW, here's another way to do it:

      @echo off
      choice /c:1234567890 "Your choice: "
      for %%x in (1 2 3 4 5 6 7 8 9 10) do if errorlevel %%x set el=%%x
      if (%el%)==(10) set el=0
      echo You pressed: %el%
      set el=

 -- NetMail: 1:135/71.17    E-Mail: vernon.frazee@sunshine.com     -vjf-
 -- Main BossNode: SOX! BBS * (305) 821-3317 * Hialeah FL USA * 1:135/71
-!- Terminate 4.00/Pro
 ! Origin: Vern's Point * Hollywood Lakes, Florida * USA * (1:135/71.17)

 Area: Batch Language Programming                     FI 
  Msg#: 446                                          Date: 20 Feb 97  15:29:00
  From: Roy Reed                                     Read: Yes    Replied: No
    To: Claude Minette                               Mark:
  Subj: auto put

   Claude-
CM> I'd like to know if it's possible, after having downloaded some
CM> files on BBS and been gone out of the program, just by writing
CM> the name of the batch to create a new directory to each file I
CM> download... And to decompress it in its directory???

  With the following batch file (UNZIPIT.BAT), run it when in
 directory where the *.zip files are.  I make a directory for each
 file, name it the same as each file.zip without the .zip, copy the
 file.zip to it and unzip it there.  This is a dos version 6+ file.
 Extract the file between the dashed lines.
-------------------------------------------------
 @echo off
 if "%2"=="unzipit" goto unzipit
 echo @prompt set drv=$p>temp1.bat
 %comspec% /c temp1.bat > temp2.bat
 call temp2.bat
 for %%x in (*.zip) do call %0 %%x unzipit
 set drv=|set base=
 goto end
 :unzipit
 dir %1|find ":"|find "-">ente3.bat
 fc ente3.bat nul/n|date|find "   1: ">ente2.bat
 echo set base=%%5>enter.bat
 call ente2.bat
 echo filename has base of %base%
 md %base%
 del ente?.ba?>nul
 copy /b %1 %drv%\%base%>nul
 cd %drv%\%base%
 pkunzip %drv%\%base%\%base%.zip
 cd..
 :end
-------------------------------------------------
    Roy
 ! Origin: The GIFfer BBS, 75+gig, (813)969-2761 (1:377/50)

 Area: Batch Language Programming                     FI 
  Msg#: 443                                          Date: 24 Feb 97  17:11:33
  From: Vernon Frazee                                Read: Yes    Replied: No
    To: Claude Minette                               Mark:
  Subj: Put automatically...

CM> I'd like to know if it's possible, after having downloaded some
CM> files on BBS and been gone out of the program, just by writing the
CM> name of the batch to create a new directory to each file I
CM> download... And to decompress it in its directory???
CM> If it is possible, by batch Otherwise, could someone tell me a name
CM> or could someone create me a program to do that...
CM> (I work with PKZIP, RAR, ARJ, and .EXE (SFX) )

    Probably the biggest problem is to parse the user's input file name
    from the file extension.  One quirk of the DOS mode command can be
    used to to the trick for you.  If you enter just a filename, the
    dot, and the extension, after the MODE command, MODE returns an
    "Invalid parameter - filename" error -- sans the file's extension.
    For example, the command "mode foobar.zip" and MODE would return the
    error "Invalid parameter - foobar". Now it's a simple matter to:

    1) First capture that output into some temporary BATch file using
       redirection.  For example:

         mode %1>~.bat

    2) Create another temporary BATch file named INVALID.BAT that will
       put that returned filename (sans the extension) into an
       environment variable.  For example:

         echo set ~=%%3>invalid.bat

    3) Run your "~.BAT", which will automatically launch your
       INVALID.BAT and bingo, the user's specified filename (sans the
       extension) is now in an environment variable named simply "~"
       (the tilde character).

    4) Now you have a valid name that can be used to create a temporary
       directory with the same name as the ZIP file (sans the extension)
       and then extract the specified ZIP file to it:

         md\%~%
         pkunzip %1 \%~%

    5) A little cleanup:

         for %%x in (~ invalid) do del %%x.bat
         set ~=

       and you've got the "meat" of your requested BATch file.  Wrap
       it around a few instructions along with testing for a few of
       the most common user errors, (the specified file doesn't exist
       for example), and you're ready to roll.

    Here's a 'quickie' example (i.e., not tested):

      @echo off
      :UZ.ZIP
       if (%1)==() goto Syntax
       if (%1)==(?) goto Syntax
       if (%1)==(/?) goto Syntax
       if not exist %1 goto NotFound
       goto Begin
      :Syntax
       echo Syntax: UZ name_of_ZIP_(with_extension)_in_the_current_directory
       goto Cleanup
      :Begin
       mode %1>~.bat
       echo set ~=%%3>invalid.bat
       for %%x in (call del) do %%x ~.bat
       del invalid.bat
       if exist %~%\nul goto Abort
       md %~%
       cls
       echo Extracting file "%1" to directory "%~%" ...
       pkunzip -d %1 %~%
       echo.
       echo Done.
       goto Cleanup
      :Abort
       echo Error: Directory %~% already exists.  Process aborted.
       goto Syntax
      :Cleanup
       set ~=
      :End

    Note: If you want to run this on a 'mess' of ZIPs that are all in a
          single directory, first change to that directory and then use
          the DOS "FOR-IN-DO" command:

            for %%x in (*.zip) do call UZ %%x

    Cool eh?  <g>

 -- NetMail: 1:135/71.17    E-Mail: vernon.frazee@sunshine.com     -vjf-
 -- Main BossNode: SOX! BBS * (305) 821-3317 * Hialeah FL USA * 1:135/71
-!- Terminate 4.00/Pro
 ! Origin: Vern's Point * Hollywood Lakes, Florida * USA * (1:135/71.17)

 Area: Batch Language Programming                     FI 
  Msg#: 445                                          Date: 25 Feb 97  11:11:00
  From: Roy Reed                                     Read: Yes    Replied: No
    To: Andi Taylor                                  Mark:
  Subj: super prompt

  Andi-
AT> Could someone please repost a prompt?  It had the drive letter red
AT> directory yellow and date-time in yellow/blue in top right corner.

   I found it, Andi.  Connect the two chunks together.

 (Kind of maxes out 127 characters, wouldn't you say?)

PROMPT=$e[s$e[1;56H$e[1;33;44m $t$h$h$h$h$h$h $d$e[u$e[1;31;40m$P$e
[1;33;40m$G$e[s$e[180D$e[1;33;40m$N:\$e[u $A$e[0m

   Roy

-!- PCBoard (R) v15.3/M 25
 ! Origin: The GIFfer BBS, 75+gig, (813)969-2761 (1:377/50)

 Area: Batch Language Programming                     FI 
  Msg#: 447                                          Date: 24 Feb 97  17:01:49
  From: Vernon Frazee                                Read: Yes    Replied: No
    To: Dan Carson                                   Mark:
  Subj: why wont this work?

                                                      24-Feb-1997 17:01
    Hello Dan,

    On 18-Feb-97 at 15:42:39, "Vernon Frazee" and "Dan Carson" were
    discussing "Re: why wont this work?":

ME> Is there a command similar to "if exist..." that will work for drive
ME> letters? When the zip disk is not connected, the drive h: does not
ME> exist, so right now I manually edit this file (rem out the echo und
ME> un-rem the vol h...)

VF> I don't have a ZIP drive here to test this but have you tried
VF> something like:
VF>   if exist h:\nul echo ZIP drive is connected and has a data disk

DC> Should be able to do it with the same idea as a batch test to see if
DC> a Disc is in a CD-ROM (And use a file on the disk to tell which is
DC> disc is in the drive via a display file for a bbs)

    Since you'd rarely be able to look for the same filename on each and
    every CD, I'd probably first attempt something like looking for the
    string "byte" from a "DIR" command, pipe it through FIND and then
    determine what to do next via FIND's returned errorlevel.

      command /f /c dir z:|find "byte"

    (The undocumented "/f" keeps the "Abort, Retry, Fail" error from
    pausing for user input if the drive is empty or has a bad disk).

 -- NetMail: 1:135/71.17    E-Mail: vernon.frazee@sunshine.com     -vjf-
 -- Main BossNode: SOX! BBS * (305) 821-3317 * Hialeah FL USA * 1:135/71
-!- Terminate 4.00/Pro
 ! Origin: Vern's Point * Hollywood Lakes, Florida * USA * (1:135/71.17)

 Area: Batch Language Programming                     FI 
  Msg#: 435                                          Date: 26 Feb 97  08:14:00
  From: Richard Epling                               Read: Yes    Replied: No
    To: Carl Wilmoth                                 Mark:
  Subj: bat file to count lines

CW>Does anyone know if it is possible to write a batch file that will count
CW>the number of lines in a file.  If so could it be made to work under DOS
CW>5 and later, ie old dos machine and new win95 machines.  Just wondering
CW>and any ideas would be of great helt to me. ... Further.. is it possible
CW>to write a batch that would count the words in a file also.

It could be done with FIND as long as you use a character that will not
be found on any line in the file. Confusing enough? You can use FIND to
count occurrences of specific text in a file, but you can also use it to
count non-occurrence, which in this case, would be the number of lines.
For example, using the character that would show on-screen if you hold
down Alt and press 2 0 4 and then release Alt. As long as that character
is not in the file anywhere this command line would give you a count of
the number of lines;

FIND /C /V " " TEXTFILE.EXT

The most important thing to remember is that the character or string you
do the search for must not be in the file. This should work for most
versions of DOS, including Win95, although if Win95 does not have a FIND
program you'll need to keep the one from your previous DOS.

One not that's probably not needed but ya never know-interestingly
enough I found that it does NOT work with the FIND.EXE that comes with
OpenDOS. Using that FIND gives an answer that is one more than the
number of lines in the file. Wierd!

Richard
  SLMR 2.1a   In a civilized society, there is no evolution.
-!- Alexi/Mail 2.02b (#10000)
 ! Origin: Mr. Boogety's BBS (1:203/735)

 Area: Batch Language Programming                     FI 
  Msg#: 446                                          Date: 26 Feb 97  17:41:01
  From: Andy Guess                                   Read: Yes    Replied: No
    To: Carl Wilmoth                                 Mark:
  Subj: bat file to count lines

Carl Wilmoth was talking to All about "bat file to count lines" on
Monday, 24 February 1997:

 CW> Does anyone know if it is possible to write a batch file that
 CW> will count the number of lines in a file. If so could it be made to
 CW> work under DOS 5 and later, ie old dos machine and new win95
 CW> machines. Just wondering and any ideas would be of great helt to
 CW> me. ... Further.. is it possible to write a batch that would count
 CW> the words in a file also. Carl

Using plain batch, counting the number of words in a file is impossible. But
counting the number of lines is a cinch!

@type textfile.txt|find /c /v "#$^(%EFXHKX4534sgdusd!@#$++__\\|"

The stuff in the quotes just has to be something that will never appear in
the file. If you want to type the command from the prompt instead of from a
batch file, simply remove the leading "@".

Hope this helps!

{Write Back!} [/^\ndy Guess?]                                             .aG
.!. Unable to locate COFFEE.MUG -- Search in progress, please wait...
-!- Terminate 4.00
 ! Origin: -AG {andy.guess@myplace.blkcat.com} (1:109/570.15)

 Area: Batch Language Programming                     FI 
  Msg#: 443                                          Date: 24 Feb 97  14:28:00
  From: Roy Reed                                     Read: Yes    Replied: No
    To: Axel Merkel                                  Mark:
  Subj: change date temporarily in batch file

   Axel-

 AM> I'm looking for BATCH - to store the current DATE
 AM> puting a specified DATE to the System and on EXIT
 AM> to Restore the current DATE - any ideas ?

 Greetings to Bad Zwischenahn

    The following batch file will change the system date to the
 date you wish, and back again to current date.  I erase the
 special files, but output the date command in the middle with
 the special date. If you are using German dos, you'll have to
 modify somewhat, especially commands like "set ersz=%%5".
 You may have to change date, current and enter to the proper
 German in the commands.  Hehe - Lotsa luck, but this worked
 for me o.k.  Batch file name not critical.
-----------------------------------------------------------------
 @echo off
 echo enter date desired and press enter key
 echo proper syntax is ##-##-####
 echo (two digits each for month-day- and four digits for -year)
 fc con nul /lb1 /n|date|find "    1:  ">ente1.bat
 echo set ersz=%%5>enter.bat
 call ente1.bat
 del ente?.bat>nul
 ver|date|find "Current">curren1.bat
 echo set hdat=%%4>current.bat
 call curren1
 del curren?.bat>nul
 echo %ersz%>^info1^
 echo %hdat%>^info2^
 date<^info1^>nul
 echo.
 ver|date
 echo.
 echo Place to-do stuff here while system has desired date in it

 date<^info2^>nul
 echo proper date has been reinstalled on system
 for %%x in (ersz hdat) do set %%x=
 del ^info?^>nul
-----------------------------------------------------------------
   Roy
 ! Origin: The GIFfer BBS, 75+gig, (813)969-2761 (1:377/50)

 Area: Batch Language Programming                     FI 
  Msg#: 446                                          Date: 11 Mar 97  11:05:00
  From: Roy Reed                                     Read: Yes    Replied: No
    To: David Morris                                 Mark:
  Subj: autodetect in batch

 David-

 DM> I want to be able to switch on my computer, hold down say
 DM> the M key while it's booting and it runs my Mail.bat file...
 DM> If I don't press the M key, I want it to automagically carry
 DM> on with the usual autoexec.bat and finish doing what ever

 Debug the following script and you can use the alt-key being held
 down during boot-up.  Change the 08 to 04 for ctrl-key, or 08 to
 02 for left shift key.  These keys, by themselves, are less
 obtrusive than other keys being depressed during a process.

 Save following script.file and enter debug<filename
 --------------------------------------------------
 N ALTKEY.COM
 E 0100 B4 02 CD 16 24 08 B4 4C CD 21
 RCX
 A
 W
 Q
 --------------------------------------------------

 Use following batch file to test.  If you want to use left-shift
 key or ctrl key, change batch file errorlevel test to reflect the
 change, and change altkey.com to leftshft.com or ctrlkey.com, etc.
 You should be able to hack through it ok.  I only put the PAUSE in
 to allow time to depress alt - not needed during booting.
 --------------------------------------------------
 @echo off
 echo we will test for depression of alt key
 echo hold down alt key while hitting another key
 pause
 altkey.com
 if errorlevel 8 if not errorlevel 9 goto yes
 echo altkey was not depressed
 goto end
 :yes
 echo depression of alt key detected
 :end
 --------------------------------------------------

 Place appropriate parts of batch file in your autoexec.bat, and
 keep altkey.com in a path-mentioned-directory.

   Roy

-!- PCBoard (R) v15.3/M 25
 ! Origin: The GIFfer BBS, 75+gig, (813)969-2761 (1:377/50)

 Area: Batch Language Programming                     FI 
  Msg#: 444                                          Date: 29 Mar 97  23:52:34
  From: Larry Nelson                                 Read: Yes    Replied: No
    To: Gary Laming                                  Mark:
  Subj: Since

         GARY:

 Subject: Since

 GL> I have need of a batch file that will process files in a directory
 GL> that have been added since the last time the batch file was run.

 GL> Is there a way to do this?

 GL> Time, as well as date, is important, as it may get run several
 GL> times a day.

      Neat idea. If a directory is of any size at all, no way
      wil you be able to remember which is new and which is old.


 ::CURRENT.BAT/DOS6.22
 :: Maintaines an internal list of the files in \TMP1 and
 :: determines if any new files have been added to the directory.
 :: Any new filenames are then added to the list. The first
 :: running of Current.bat set's up the master list. Monitoring
 :: begins with the second running.
 @echo off
 cls
      set mrk=::
      find "%mrk%!" tst.bat>lst1
      if errorlevel 1 echo Setting up current file list.
      if errorlevel 1 goto cleanup
      for %%q in (\tmp1\*.*) do echo %%q>>lst2
 :lp
      fc lst1 nul/n|date|find " 3: ">ente1.bat
   echo set name=%%6>enter.bat
      call ente1
      type lst2|find/v "%name%">lst2
      type lst1|find/v "%name%">lst1
      type lst1|find "%mrk%!">nul
      if not errorlevel 1 goto lp
   echo These files are new.
      type lst2
 :cleanup
      type current.bat|find/v "%mrk%!">current.bat
      for %%q in (\tmp1\*.*) do echo %mrk%! %%q>>current.bat
      if exist ente?.bat del ente?.bat
      if exist lst? del lst?
      for %%q in (mrk name) do set %%q=
 :L8r

      Didn't know what you had in mind for processing of
      new files so I just typed the new file list to screen.
      Lst2 (the one that holds the new filenames) can be
      can be tapped just as Lst1 was for comparison. Each file
      can be accessed seperately for whatever need you have.
      Give me a yell if you need any help on that score.
 :L8r
               Larry
               .....In a pinch a stone ax still works.....



-!- Maximus 2.02
 ! Origin: MSDOS MAXIMUS BBS (1:343/101)

 Area: Batch Language Programming                     FI 
  Msg#: 443             Rec'd                        Date: 14 Apr 97  21:15:42
  From: MIKE ZELESKI                                 Read: Yes    Replied: No
    To: BAT LANG                                     Mark:
  Subj: BATFAQ73.ZIP

BL> BL>BATFAQ73.ZIP  13033  03-01-97  BATPOWER Frequently Asked Questions
BL> BL>Avail for 24hr freq-only, from my Origin, 3 lines, all USR DS,
BL> MZ> When it comes through I'll add it to my Internet UUCP E-Mail
BL> MZ> UUencoded mailback site too...

BL>Tell me how this works.  If I like it, I'll prolly 'send' you a cy via
BL>your E-mail address, which I'll also need.  Thanks, and Good Modeming!

Currently it's...

  O   Internet: mike.zeleski@father.com Fido E-Mail: 1:2607/112.
( z ) Editor/Creator of HDCNFQ5?.ZIP collection of Hard Drive Faqs.
 | |

MAILSUB.TXT

HDCNFQ5A.ZIP through HDCNFQ5C.ZIP, HDCNPG1A.ZIP and quite a few other
files can be requested by mail subscription via the Internet. A
comprehensive list of all of these files is also available, just ask for
ALL.TXT.

This is based on some old pre-web technology, someone local should be
able to explain what a mail robot is and how they work to you. But it
consists of just three steps...

1.) Where:

    The address you need to send your request to by Internet is:
    "mike.zeleski@father.com"  (No Quotes.)

2.) What:
    You need to specify a file.

    So the Subject Line must read:
    "Please Send xxxxxxxx.xxx".

    (xxxxxxxx.xxx = Filename of the file you want to see, use the entire
    correct filename only. No Quotes. Multiple requests are NOT
    supported, so don't use wildcards or x's.)

3.) Who:
    The program needs to know the address and the net your using.

    The message body needs a line that has your.full@net.address and
    identify the shipper.

    The Internet format for the message body line is:
    "Internet: your.full@internet.add (Your Name)"  (No Quotes.)

In 24-72 hours you should receive the file you requested. If not, you
messed up, and try again.  Only request text files via Non-Internet mail
exchanges, as such binary file requests will not be fulfilled...

-!-
 * OLXWin 1.00b * Mac 84, Amiga 85, Linux 93, OS/2 Warp 94 => Windows 95


 ! Origin: Father & Son BBS (1:2607/112)

 Area: Batch Language Programming                     FI 
  Msg#: 450             Local                        Date: 23 Apr 97  23:30:58
  From: Bat Lang                                     Read: Yes    Replied: No
    To: Alexander Ng                                 Mark:
  Subj: FAQ corrections

 -=> Quoting Alexander Ng to Bat Lang, [21 Apr 97  15:07:00] <=-

 AN> I'd like to let you know that there are some inaccuracies in the faq

Thank you, sir.

 AN> In reboot question the xdo should be x00, a fossil.

Got it.

 AN> The script for reading the current drive and directory doesn't work.
 AN> There are some problems with "out of environment" errors when
 AN> command.com is executed and the drive where the batch files are
 AN> created is readonly like cd-roms. The modified batch file now works.

 AN> @echo off
 AN> REM Set Envars to current drive & current directory
 AN> @set oldrv=                         <<******<<<< 1
 AN> @set oldir=                         <<******<<<< 2
 AN> @echo @prompt SET OLDRV$Q$N$_SET OLDIR$Q$P > c:\TEMP$TMP.BAT
 AN> @c:\command.com /e:1024 /c c:\TEMP$TMP.BAT > c:\TEMP$$MP.BAT
 AN> @call c:\TEMP$$MP.BAT >nul
 AN> @del c:\TEMP$?MP.BAT

This one I bought your ideas, but in a slightly more compact version.
Can you (we) live with this: ?

     ::Set Envars to current drive & current directory
|    @echo @prompt SET OLDRV$Q$N$_SET OLDIR$Q$P >C:\TEMP$TMP.BAT
|    @%COMSPEC% /e:1024 /c C:\TEMP$TMP.BAT >C:\TEMP$$MP.BAT
|    @call C:\TEMP$$MP>BAT >nul
|    @del C:\TEMP$?MP.BAT

I can see NOTHING contributed by your two lines I marked 1 & 2 (given
the remainder of this batch file).  Am I missing something??
In the next update, watch for your attribution!!  {^; Thanks again, and
Good Modeming!  /\oo/\

... NetMail: 1:382/1201 or E-mail: bat.lang@1201.ima.infomail.com

-!- Blue Wave/Max v2.30
 ! Origin: The HUB * Austin TX * Centex PCUG * 512-346-1852 (1:382/1201)

 Area: Batch Language Programming                     FI 
  Msg#: 449                                          Date: 04 May 97  19:25:39
  From: Michael Kleefeld                             Read: Yes    Replied: No
    To: Mark Nelson                                  Mark:
  Subj: getting EL (Re: Undocumented Errorlevels)

Hi Mark


 DC>> .. post the Batfile you made that gave you the Errorlevels. ^_^
 MN> I posted the list of errorlevels 2 days ago, watch for it, you
 MN> should have it by now probably, or get it soon.  As for the
 MN> batfile, it's 511 lines, following this format:
 MN> if errorlevel 255 echo 255
 MN> if errorlevel 255 goto end
 MN> if errorlevel 254 echo 254
 MN> if errorlevel 254 goto end
 MN> ...etc
 MN> :end

Horrible. Save my mind and take this batch:  ;)

===gel.bat===
@echo off
::: Ŀ
:::  GEL V1.1g       (c) 1995-97 Astronik 
:::  Fehlerwert in Variable EL ; xxDOS>=5 
:::  Syntax: GEL [prog [para [..]]] max.8 
::: 
if not %1&==& call %1 %2 %3 %4 %5 %6 %7 %8 %9
set $=
for %%h in (0 1 2) do if errorlevel %%h00 set el=%%h
if not errorlevel 200 set $=6 7 8 9
for %%z in (0 1 2 3 4 5 %$%) do if errorlevel %el%%%z0 set el=%el%%%z
if not errorlevel 250 set $=6 7 8 9
for %%e in (0 1 2 3 4 5 %$%) do if errorlevel %el%%%e set el=%el%%%e
set $=
echo GEL V1.1g  (c) 1995-97 Astronik  EL=%el%
===end===


  greets    |X|
            | |icha

-!-
 ! Origin: -<  BATCH.GER  german batching  >- (2:2468/6037.29)

 Area: Fido: Batch Languages Programming 
  Msg#: 43                                           Date: 06 May 97  14:13:00
  From: Jim Westbrook                                Read: Yes    Replied: No
    To: Allen Fraley                                 Mark:
  Subj: Looping batch file

Answering a msg of <Saturday May 03 1997>, from Allen Fraley to All:

=> Now to my problem. Every so often I will get an inbound packet or file that
=> => a program can't or will not handle for various reasons. And as you
=> guessed => it, the batch file keeps seeing the inbound file and keeps
=> wanting a program => to do something with it. My log files get huge when
=> this happens.  Is there => a way that the batch file can "notice" that it is
=> looping to many times and => will stop and move all the inbound files to
=> another directory for my later inspection? Or better yet move just the
=> "offending" file or packet so => the rest of the inbound files can process?

Having shared your "fun" with this loop, here's what I've done to stop it. Once
the mailtoss routine completes, there should NOT be any bundle or packet files
remaining in the inbound directory.  I added a second IF EXIST test at the end
of the toss routine which moves any remaining bundles/packets to a "bad bundle"
directory for later examination.

:tossmail
 cd \inbound
 for %%a in (mo* tu* we* th* fr* sa* su*) do if exist *.%%a call mailtoss.bat
 for %%a in (mo* tu* we* th* fr* sa* su*) do if exist *.%%a move *.%%a \badbndl
goto start

Works for me...
Jim

-!- GoldED 2.40.P0623+
 ! Origin: JimNet - Austin, TX  (512)837-0953 (1:382/29)

 Area: Batch Language Programming                     FI 
  Msg#: 446                                          Date: 05 May 97  14:45:28
  From: Bruce Howells                                Read: Yes    Replied: No
    To: All                                          Mark:
  Subj: Save Disk Space

Greetings All!

Here is a batch file which makes it convenient to store a lot of
*.DOC, *.TXT type files in an archive rather than taking up more
space on the hard disk. The idea is to put these files in the
archive (ensure that their filenames match the program's) and
then when you want to see the docs for PKZIP or LIST just type
SHOW PKZIP or SHOW LIST.

The batch file extracts the required doc file (I recommend to a
ram disk) and displays it via LIST. Once you finish LISTing the
file you it askes if it's ok to delete the extracted file.

The extentions used for the doc. files doesn't matter as SHOW.bat
tells PKUNZIP to extract any files with the required filename.

@ECHO OFF
REM SHOW.bat requires PKUNZIP, LIST, CHOICE to be in PATH
REM Next line creates zero length Quit.bat
REM> QUIT.BAT
CLS
if not (%1)==() goto testdir
ECHO Syntax to use is SHOW filename or SHOW DIR
ECHO
ECHO where filename is the .DOC file to be viewed,
ECHO and DIR provides a listing of the DOC files in the archive.
ECHO
QUIT
:testdir
IF NOT (%1)==(DIR) IF NOT (%1)==(dir) GOTO findfile
PKUNZIP -VM DOCS
QUIT
:findfile
SET NAME=
PKUNZIP -E DOCS %1.* I:\
FOR %%F IN (I:\%1.*) DO IF EXIST %%F SET NAME=%%F
IF NOT (%NAME%)==() GOTO listdoc
ECHO AN ERROR OCCURRED WHEN TRYING TO SHOW %1.*
ECHO
QUIT
:listdoc
LIST I:\%1.*
ECHO ^[2J^[33;44m^[10;21H+------------------------------------+
ECHO ^[11;21H|                                    |
ECHO ^[12;21H|                                    |
ECHO ^[13;21H|      ^[37mY deletes  N or Esc quits     ^[33m|
ECHO ^[14;21H+------------------------------------+
ECHO ^[11;26H^[36mOK to delete %NAME%?^[37m^[16;1H
CHOICE /n Yes or No
SET NAME=
IF ERRORLEVEL 255 QUIT
IF ERRORLEVEL 2 QUIT
DEL I:\%1.*

In the batch file the caret symbol ^ should be replaced by the Escape character
in all cases, and the box drawing characters could be used
around the `OK to delete' box. I have a few DOCS.zip archives in different
subdirs. and find it a convenient way to `remember' the less frequently used
syntax required on occaisions.
I recommend that the output of the PKUNZIP commands be to a RAM disk for top
speed and reduced hard disk wear. Bruce.

-!-
 ! Origin: Melbourne PC User Group BBS (3:632/309)

 Area: Batch Language Programming                     FI 
  Msg#: 448             Rec'd                        Date: 06 May 97  15:16:57
  From: Mark Nelson                                  Read: Yes    Replied: No
    To: Bat Lang                                     Mark:
  Subj: Text search & replace

-=> I came upon Bat Lang rambling on to Kurt Elliott:

 -=> Quoting Kurt Elliott to Bat Lang, [04 May 97  11:42:35] <=-

 KE> Thanks, I like to get batch file enhancers that I never heard of
 KE> before! Kurt
 BL>
 BL> You might see if your Sysop is getting the BFDS FDN via the Filebone.
 BL> If not, perhaps he can try a Netmail msg to Charles Meadows at
 BL> 1:203/1. He is your NEC and should be able to tell you if anyone in
 BL> your net is carrying the BFDS files.  There are a number of fine
 BL> enhancers in there. For more on the BFDS, see 'Echo rules', twice
 BL> monthly (1/16) right here. Good Modeming!  /\oo/\

If you (or Kurt) didn't already know, the entire file bone is available at
http://www.ftbbs.com/.  Click on Filebone and then there are all the FDN's
with all the files available for download.

... Ever notice how fast Windows runs? Neither did I...
-!- Blue Wave/386 v2.20
 ! Origin: COMM Port OS/2 juge.com 204.89.247.1 (281) 980-9671 (1:106/2000)

 Area: Batch Language Programming                     FI 
  Msg#: 448                                          Date: 12 May 97  01:22:48
  From: Bat Lang                                     Read: Yes    Replied: No
    To: All                                          Mark:
  Subj: PC Mag. Win95 Batch info

The following User-to-User tips from PC Mag are fwd'd without comment or
knowledge (I don't do WIN).  Good Modeming!  /\oo/\

DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD
USER-TO-USER

Visible Errorlevels in Windows 95

Many batch files make decisions based on the errorlevel returned from a
program.  The errorlevel values that may be returned are generally
described in the program documentation or the MS-DOS user manual.  In
Windows 95, however, COMMAND.COM has an undocumented /Z switch that
causes it to display the errorlevel returned by every DOS program you
run.  If you're a batch file programmer, I think you'll find this switch
to be very handy.

    Ruben Cheng, Valencia, Venezuela

---------------------------------------------------------

PC MAGAZINE:  This is a useful tip.  Mr. Cheng originally suggested
adding the /Z switch to the SHELL= line in CONFIG.SYS, but errorlevel
reporting is not a feature you'll want turned on all the time.  When
you're developing batch files in an MS-DOS window, however, enter the
command COMMAND /Z. Now you're operating under a secondary command
processor that reports the errorlevel for each DOS program, as Figure 1
illustrates.  To return to normal operation, simply enter the EXIT
command.

--Neil J. Rubenking
========================================================

USER-TO-USER

Wildcard Surprise in Windows 95

The asterisk and question-mark wildcards have been with us for as long
as DOS's file system has existed.  The asterisk stands for any number of
characters, or no characters, and DOS will ignore anything after an
asterisk in the name or extension section of a file specification.  The
question mark stands for one character or, unless a wildcard character
follows it within the name or extension, no characters.  Thus the
command DIR F????.EXE will list any .EXE file whose name starts with F
and is no more than five characters long.

Unfortunately, the behavior of the question-mark wildcard character in a
Windows 95 DOS box utterly breaks with tradition.  The command DIR
F????.EXE lists only .EXE files beginning with F whose name is exactly
five characters long.  As far as the DIR command goes, the question mark
now stands for exactly one character; even at the end of a filename or
extension, it cannot stand for no characters.

Other commands apparently interpret the question mark in still other
ways.  For example, the MOVE, XCOPY, and DEL commands and the IF EXIST
batch file command all permit the very last question mark in a filespec
with no extension to represent no character.  What does that mean?
Suppose a file named XX exists in the current directory.  The command
DIR XX? will not list the file, but the command DEL XX? will delete it.
What a mess!  The batch file in Figure 1 demonstrates the problem:  The
DIR command reports one file, but the DEL command using the same file
specification deletes two.

The FOR command treats the question mark just as it did in earlier DOS
versions.  If the current directory contains A.BAT, AT.BAT, and ATE.BAT,
the command DIR A???.BAT won't list any of them.  But the command FOR
%%v IN (A???.BAT) DO ECHO %%V will list all three.

ZD Net sysop Greg Wolking suggests that this behavior is related to the
fact that long filenames are available in a Windows 95 DOS box, but not
in the DOS version accessed by restarting in MS-DOS mode.  That's a
likely explanation, though one not yet confirmed by official sources.
The important point to remember is this:  Any batch file that uses the
question-mark wildcard is suspect and should be tested thoroughly before
use in a Windows 95 DOS box.

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

USER-TO-USER

Changing the Global Environment in Windows 95

The utility Winset.exe, included with Windows 95, will set global
environment variables after Windows 95 is started.  For batch files,
it's not quite as useful as it might be, because changes don't show up
in the DOS session in which it's run.  But the changes are applied
globally.  So, for instance, use Start | Run and type in

    WINSET foo=bar

Then, bring up a DOS box, type SET, and you'll see the new environment
variable.

Winset isn't automatically installed with Windows 95.  It's on the
CD-ROM, buried in the ADMIN\APPTOOLS\ENVVARS folder, or available for
download from Microsoft.  One use is to let you eliminate Config.sys or
Autoexec.bat files that exist only to set a few environment variables.
Just use Winset in a batch file in the StartUp folder to set the
variables and eliminate the unnecessary initialization files.

    Don Lebow
    Lahaina, Hawaii

---------------------------------------------------------

PC MAGAZINE:  A DOS box under Windows is isolated, as far as environment
variables go.  When it starts, the DOS box gets a copy of the global
environment owned by Windows, but then the connection is broken.
Changes made in the copy don't affect the global environment.  They're
not visible in other DOS boxes, and when this DOS box terminates,
they're lost.

The Winset utility breaks this isolation, because it acts on the global
Windows environment.  As noted, changes made with Winset won't affect
any DOS box that's already open.  But you can keep a batch file in synch
with the global environment by using SET along with Winset.  For
example:

    WINSET foo=bar
    SET foo=bar

I'm sure you'll find many uses for this hidden command.

--Neil J. Rubenking
========================================================


... NetMail: 1:382/1201 or E-mail: bat.lang@1201.ima.infomail.com

-!- Blue Wave/DOS v2.30
 ! Origin: Rendezvous!! 8gigs_20000files_500echoareas 512-303-1324 (1:382/92)

 Area: Batch Language Programming                     FI 
  Msg#: 449                                          Date: 12 May 97  16:32:00
  From: Roy Reed                                     Read: Yes    Replied: No
    To: Rodney Richison                              Mark:
  Subj: dated .zip files

 Rodney-

RR> I'd like to back up the bre game nightly. Would you guys have
RR> a batch file handy for renaming a .zip file to the current
RR> date?  Like this          BR050997.zip

    Using a modified Andy Guess' batch file, the file YOURFILE.ZIP
 gets renamed to BR plus the date like you wanted it.  Change the
 line beginning ren to accommodate proper path\filename (between
 ren and BR).

Use the batch file between dotted lines - any_ name.bat
This uses 23 environmental bytes.
----------------------------------------------------
@echo off
if "%1"=="[" goto 2
ver|date|find "is">tmptmp!!.bat
echo set mmddyy=%%4>current.bat
call tmptmp!!
echo;;|choice /c;%mmddyy%= %0 >tmptmp!!.bat
tmptmp!!
:2
set mo=%2%3
set dom=%5%6
shift|shift
set yr=%8%9
ren C:\YOURPLAY\YOURFILE.ZIP BR%MO%%DOM%%YR%.ZIP
for %%x in (current tmptmp!!) do del %%x.bat>nul
for %%x in (MO DOM YR MMDDYY) do set %%x=
----------------------------------------------------
   Roy
 ! Origin: The GIFfer BBS, 75+gig, (813)969-2761 (1:377/50)

 Area: Batch Language Programming                     FI 
  Msg#: 449                                          Date: 10 May 97  13:15:00
  From: Mark Adams                                   Read: Yes    Replied: No
    To: Jim Patterson                                Mark:
  Subj: Where do it go?

JP>        I have a recurring problem in that if my DOS based
JP> commmunication program is running under Windows *and* I don't realize
JP> it *and* I attempt to launch that program, I get a device contention
JP> problem that takes a lot of key work to get out of and is just plain
JP> irritating.

Me personally, I avoid all this by running Telix from a batch file
called by a function key in FrontDoor.  It works like a charm and it's
a whole lot simpler.  But if you insist....

I'm sure you'll get gobs of clever ideas to deal with this, but I use a
simple semaphore in batch files that prevents conflicts with our DOS
software running under Win at work.  There is no reason you couldn't use
a semaphore set by FD and checked by Qmodem.  It might look something
like this:

::FDOOR.BAT
@echo off
set BGFAX=C:\fd\BGFAX
rem            --- We end up here after every BBS call
cd\
:loop
c:
CD \fd
IF EXIST FD_ACTIV.FLG ECHO GOTO FLAGGED
@ECHO > FD_ACTIV.FLG                    <--Create a 0-byte file
FLAGGED
rem             -- start fossil driver

    Blah, blah, blah....

DEL C:\FD\FD_ACTIV.FLG                   <---
::end FDOOR.BAT

Then...

::Qmodem.bat
IF EXIST C:\FD\FD_ACTIV.FLG GOTO CONFLICT

    Blah, blah, blah to start Qmodem....

:CONFLICT
ECHO FrontDoor is already running.  You must close it before
ECHO attempting to run any other communications program.
pause
::end Qmodem.bat

Then you just create a PIF to open Qmodem that uses this bat file.  You
may also want to put a line in your autoexec.bat file somewhere that
deletes this flag file on bootup so that it doesn't cause any excess
grief.


... Vulcans do not do yard work.
 * TLX v4.10 *
-!- Alexi/Mail 2.02b (#10000)
 ! Origin: Villa Straylight BBS, Portales, NM  505-359-2162 (1:318/0)

 Area: Batch Language Programming                     FI 
  Msg#: 450                                          Date: 28 May 97  06:02:00
  From: Michael Ayres                                Read: Yes    Replied: No
    To: Mark Ruhland                                 Mark:
  Subj: Help with a "little" automation;-)

Hello Mark:

 > Hi ALL!!!!!!

 > What I'm trying to do is set in my batch file a portion that if exist
 > BACK*.* (backbone.na, no and backstat.*) it would run this:

  Simple problem - easy fix;

 >     if exist P:\in-prot\back*.* goto backbone
       REM And if not, simply proceed to the next instruction - which is;
 > :BACKBONE
       REM Uh oh...gonna do it anyway...
 >  P:
 >  CD \SEAL
 >  del back*.*
       REM We don't need to be here...
 >  P:
 >  cd \in-prot
 >  move back*.*  \SEAL
       REM OOOPS - there isn't any back*.* to move this time...

 > But, what it seems to be doing is deleting the existing back*.* in
 > \seal which I want then moving the new files into place, but then
 > when the mail runs again, instead of leaving it alone, it deletes it
 > from SEAL...

  It has no choice, the way the batch segment is laid-out.  Try this;

if not exist P:\in_prot\back*.* goto other
 > ^^^
:BACKBONE
CD\SEAL
REM Etc etc etc...

:OTHER

  See how it 'drops through' as before, if the back*.* filespec actually _does_
exist in the target directory?  In such case as it does not, the 'goto' directs
things elsewhere.  That is where you give it an alternative - the old segment
didn't provide for an alternate branch in such case as the filespec did NOT
exist ... it proceeded to the next line in the batch regardless of the outcome
of 'if exist'.  By reversing the test, you can leave the :LABEL where it is,
but branch away from it as shown above.

  Batch files are intensely logical, and nowhere else will you as frequently
hear the programmer scream; "Do what I meant - not what I said!!".  For me
personally, I get just as much mileage out of 'if not exist' as I do with 'if
exist'.  Simply pay attention to that NEXT line in your batch ... which will
surely get executed if no alternative provision is made for success/failure of
the test involved.

  Hope you find this principle to be of some use.  Pleasant day.  :-)

Michael

-!- FMail 1.0g
 ! Origin: Ye Public House of Tullamore / Wichita Falls, Texas (1:3805/24)

 Area: Batch Language Programming                     FI 
  Msg#: 436                                          Date: 29 May 97  20:34:00
  From: Roy Reed                                     Read: Yes    Replied: No
    To: All                                          Mark:
  Subj: crosspost

I found the following in the BATCH echo, but never saw it crossposted
in the BATPOWER echo, so I am resubmitting it herewith.
----------------------------------------------------------------------
Conference: BatchFilesFI
Message:    77  [PUBLIC]
From:       MICHAEL MARQUART
To:         ALL
Subject:    Processing a list
Date:       05-15-97 23:48

 Hi.

 I have been fiddling around with a program called Mame (Multi Arcade
 Machine Emulator) and found it necessary to create a batch file which
 would dynamically recreate all the current subdirectories on another
PC.

 Seeing as how I could readily create a list of the current
subdirectories
 (dir /a:d /b) I needed a batch which would take each item in the list
and
 echo MD %item% into a new batch file - without choking on similar
 directory names... so out of that need the following "engine" was
born.:)
 It's a very simple idea which uses FIND (and TIME) to number the list,
 and  FIND (and TIME) again to strip the current numbered item into
 a batch, with a format that it's easy to get the item into an
environment
 variable.

 FIND is also used to implement the counter.

 There seems to be no limit to the number of items in the list (I tried
 7032) apart from the speed penalty such a large number of items incurs.

 I hope it's a novel "trick" for at least some of you. :)

 :: Call_me_what_you_will.bat
================================================
 @echo off
 if not "%1"=="" goto start
 echo.
 echo.  Syntax: %0 listfile
 echo.
 echo. Purpose: This will perform any operation upon a list of files
 echo           (or subdirectories etc) that are contained in a text
file
 echo.          with one item per line, taking each item in the listfile
 echo.          one at a time.
 echo.
 echo.          This will treat similar names in the list as unique
items.
 echo.
 echo.          If no listfile is specified, it will merely list each
item
 echo.          in a list of subdirectories, created from those that are
 echo.          in the current directory.
 echo.
 echo.    Note: Insert your desired operations between the
 echo.          ":: top" and the ":: bottom" statements below.
 echo.
 echo. Requirements: This batch uses FIND (msdos) and expects
 echo.               it to be on the path.
 echo.
 echo.               Tested with MSdos V6.22
 echo.
 pause
 dir /o:n /a:d /b >!_~_!0.bat
 :start
 if not "%1"=="" if exist %1 copy %1 !_~_!0.bat>nul
 :: number the list
 echo.>>!_~_!0.bat
 type !_~_!0.bat|time|find /i "enter"|find /n /i "enter">!_~_!0.bat
 echo set target=%%6>enter.bat
 echo set count=%%2>--------.bat
 if exist !_~_!1.bat del !_~_!1.bat
 :loop
 :: counter
 echo !>>!_~_!1.bat
 find /c "!" !_~_!1.bat>!_~_!2.bat
 call !_~_!2.bat
 :: strip the item with the number of the counter
 type !_~_!0.bat|find "[%count%]"|time|find "[%count%]">!_~_!3.bat
 call !_~_!3.bat
 :: check for final item
 if "%target%"=="" goto end

 :: top
 echo Processing item number %count% - %target%
 :: bottom

 goto loop
 :end
 for %%a in (enter --------) do if exist %%a.bat del %%a.bat
 for %%a in (!_~_!0 !_~_!1 !_~_!2 !_~_!3) do if exist %%a.bat del
%%a.bat
 for %%a in (target count dir file) do set %%a=

::======================================================================
  Roy--------------------------------------------------------------------
 ! Origin: The GIFfer BBS, 75+gig, (813)969-2761 (1:377/50)

 Area: Batch Language Programming                     FI 
  Msg#: 448                                          Date: 01 Jun 97  17:37:04
  From: Douglas Myers                                Read: Yes    Replied: No
    To: Rick Gordon                                  Mark:
  Subj: one a day

 RG> Thanks for the assist. I like the way you commented the file out to
 RG> help me in seeing how you did this.  Let us suppose I want to expand
 RG> the ability of the batch to a true "one-a-day" system (eg: 365 files).
 RG> Is this possible?  What I am looking for is the practical limit to
 RG> the batchfile...

Yeah, it's practical to get a 365 day system.  The batch file below
gives you both the ability to run appropriatly named batch files and
the ability to write zero-byte semaphore files which can be tested
by other batch files.  As it's set up, it doesn't go beyond 365
days.  I figured I'm not going to schedule events more than
annually.  Decade, Century, and Millenium maintenance seemed to be
stretching it :)

This is a "late" response to your discussion about running timely
batch files.  Late because I just wrote it this weekend :)  I had
started to do this from an old message Vernon Frazee wrote about
writing the date to the environment using a trick with MODE.EXE and
with a FOR IN DO loop to parse the output from DATE into it's
seperate components.  That worked, but it was so durned slow on my
20 MHz machine (inside a Win DOS box, yet), that I started casting
about for a faster way to parse the information needed for this
file.  I found it, using DOS file renaming rather than the MODE
parsing Vernon had illustrated.

Here's the batch file below.  I've tried to insert comments as
appropriate.  In a seperate message, I'll post a script file which
includes a "setup" (this batch file plus some of the timely batch
files it will run).  You could call out your own batch files from
these, or write them directly to suit yourself :)


:: --------------------- clip and save as DAY.BAT ------------------
@echo off
goto START

        Generates timely semaphores and calls timely batch files.

:START
echo.
echo           DAY.BAT - generates semaphores:  mm-dd.DAY and dow.DAY
echo                      mm-dd.DAY and dow.DAY
echo                    - Runs batch files in this order:
echo                      DAILY, dow, mm-dd, WEEKLY, MONTHLY, YEARLY
goto GETDATEINFO


        CURREN.BAT below gets info from TIME in the form of "Current
        date is Sun 06-01-1997."  CURRENT.BAT writes the third
        word (%3 is SUN) and fourth word (%4 is 06-01-1997) to the
        environment.

:GETDATEINFO
echo.|date>curren.bat
echo set -day=%%3> current.bat
echo set -date=%%4>> current.bat
call curren.bat
del curre*.bat
goto PARSEDATE


        PARSEDATE gets rid of the "1997" part of the date by masking
        a filename written to a temporary directory, and then
        rewriting the environment variable -DATE.

:PARSEDATE
md $temp$
cd $temp$
rem>%-date%
ren ??-??-?? ??-??
for %%a in (??-??) do set -date=%%a
cd ..
deltree /y $temp$ > nul
goto MAKEFLAGS


        Now that the -DATE variable is proper, MAKEFLAGS will 1)
        exit if DAY had been run already, 2) clean up old semaphore
        files, and 3) generate a new set for today.

:MAKEFLAGS
if exist %-date%.day goto ALREADY
if exist *.day del *.day
rem>%-day%.day
rem>%-date%.day
goto RUNBATS


        Run the following batch files if they exist

:RUNBATS
if exist daily.bat                        call daily.bat
if exist %-day%.bat                       call %-day%.bat
if exist %-date%.bat                      call %-date%.bat
if exist sun.day if exist weekly.bat      call weekly.bat
if exist ??-01.day if exist monthly.bat   call monthly.bat
if exist 01-01.day if exist yearly.bat    call yearly.bat
echo.
echo           DAY.BAT is done ...
goto END


        Skip RUNBATS if DAY.BAT already did it's thing

:ALREADY
echo.
echo           DAY.BAT has already run today...
goto END


        Clean environment and exit

:END
set -day=
set -date=
:: --------------------- clip and save as DAY.BAT ------------------


... Douglas.Myers%270-720@mdtnbbs.com
-!- Blue Wave/DOS v2.20
 ! Origin: Howdy's Whistle Stop  Summerdale PA  717 732 6820 (1:270/720)

 Area: Batch Language Programming                     FI 
  Msg#: 449                                          Date: 01 Jun 97  17:37:05
  From: Douglas Myers                                Read: Yes    Replied: No
    To: Rick Gordon                                  Mark:
  Subj: one a day

This is the scripted archive containing DAY.ZIP, the subject of my
previous letter.  DAY.BAT is an all DOS batch file which creates two
semaphore files in the form of dow.DAY and mm-dd.DAY.  These are
zero-byte files which may be used by other batch files to run
scheduled events.  As a more direct approach, DAY.BAT looks for the
following batch files in its directory and runs them (once only) if
they are present and timely:  DAILY.BAT, dow.BAT, mm-dd.BAT,
WEEKLY.BAT, MONTHLY.BAT, and YEARLY.BAT.  This archive contains the
same DAY.BAT previously posted here, but also contains sample
maintenance batch files mentioned above.  If you unzip it into it's
own directory, it's ready to run in demo form :)

Cut and save as DEBUG.SCR (DEBUG < DEBUG.SCR creates file):
--------------------------------------------------------------------
 NDAY.ZIP
 e100 FC "+"ED BE 8B 1 B9 F5 FD "+"DB 8B D6 B4 "?"CD "!riP"8B DE 8B
 e117 C8 AC "<*"E0 FB "uP"B4 1 80 F4 1 "<"A AC "u"FB "<>t"F4 A E4 "u"
 e130 F3 E8 "'"0 "*"F6 3 EA FE C6 B1 4 AC "< v"E3 E8 17 0 2 D2 2 D2
 e148 B5 6 D1 E2 "s"5 88 "7C"B6 1 FE CD "u"F3 E2 E3 EB DF 8A D0 BF
 e15E 80 1 2 "U"FF "*"15 "r"7 AE "r"4 AE "s"F3 C3 "XZ"B9 FF FF F7 DA
 e175 B8 1 "B+"DB CD "!"8B CD CC 0 "+,-.0:A[a{"FF
 g=100
 w18B
 q
*XXBUG300000072D01061997A3A60D99133728------------------DAY.ZIP
nI2g1--E++U+6+53ekG61hKycI+A++1Y6+++5++++F23N9Y7-J7JJMKzPBV1x5W1zsK1I
nK3pMKfkI4leUnhFMmM6avW+f4DmFBYwl2MYo88eOUDrqMSF73aJrKH5-EAXXjLRrvsvA
nfvXR8J-NRbvqf6m0JFcZuTbNyFZorlp8pAlU0IMIa1REMg5qCuKhVIYCKtPbzRa4aSoC
nAd3X4HeGesvC-EbPDx-zTwAWKcSTcVE0SCuXSDcfU866C+yh4sLWebPfItvVxnw-+GGJ
n96RdUt-URe62dHbeezy8hMXi5xNH3qHOldr05r5wqRYSjmnHrxlW5IT7kvfHxWtC3p2O
nrmxjjnVljAMrHoYG9oa81SOehb6MZoaa6BCeUDHyAKsHEwWI9amzM5FHOMrGS-NixECP
nyOeGQD3nQ129NVwyz-8C1jkd-OWpc4NO8ZibtVtTqt9VvTWGC7uK2t6kItIqiwDNSrTa
niGRUev7AbUDZJu4J94lWvE+QpIlXw7T9QvuZv2CfT0RlWEM0ndeDsz5Z5BdXwyqtESjk
nTbvWsMMEVdEQizqvRYzuzlsZexVZQulyPqtZps6vTNp+6pTY0DNAasC7FBsoI91mFQVb
nnw7cTWEfY0Eq87os1+kKSuKNPc+9XJiXR1AZNGqPx50B1aIN8Qd+FjX8h40P503kCPOe
n1WcdC9llARtM3TlGMn2TYplXht3kTFrEfpqQbqJ8krXAr3Gx7RA2y956X+X1YAEo4V3y
nP1dya6CgwYvJlyVnTDgErOqCJJqeqdP01BJ1eTh8F+ZvfTOcdlsBhP+xb2o4gzGbA0+m
nxof+Xb5Mc8p1Jl7Mfd3l8yBD2xXam0FISp+txqy57u39rEdyCSaT4RgLWHKJusEkWfCa
nJLNEXEphImUBR284pUactCUVWOD3Si1mXUvRpB58Bu+N5ywvbYuvt4bt8IdDZ2iekorD
nQpKvYHVubqUCanMidRmHxBZk7j941Huwwh3xuPpCGfIdjksZdDTu3tJSlTPEnai+9Gh7
n+jO44j3ZK+7VjL2+jPsC9aP5s277gyjF--qM-hW9qHTM-dbqUEbfHRzxFmN8s2cWVCvO
nI6TXtS8siugLgHzojNhiUbN11Jlk2CM5xo9Hyq6Pr6zPRu9jKBbHi5jGXjLfeRnErFay
nBSuOi4h5MQazTtPvdQ4DvjUTI2g1--E++U+6+-VekG7kkhmHp++++4+-+++7++++F237
nH3YiEY3IPN+lPgAk12Lr+9b1LskiXUyEeGaGkI0EmIh4pe7e+H6NG969Lvucd+6Racc1
njoHWwJCjD2s8hLOz8ufvGTUxLyVTNdlDzTLSjNq41iVhTL80B54ir43Qs13dq3foy5HS
n6mnm3kGcX+m0cRmrF9O9VxKEvwtjaAZ7Me5QYqQIP-a5WS6nW5lUAVgWdyfVI2mEa084
n0pVK3pFaZYES8kJ5vttXykm8KZRNcdCDEdclQK+YnGj3VuShsUqZsabEv-ni5nzB6JSO
nhiP2HTv1syJqrix8T+BEGkA23++0++U+6af-6WF9MHQw++++DE++++c+++-LFIJ9H3Yi
nEY3IDQMl0c+k12PVjN+vz2i59i9QeLQdWEN8IZ9D9m80rz7SsrsuL6HGSxgLz4vY5PcE
nD1oihEBiEspF0uI5I2g1--E++U+6+07ekG6YGq2rD++++1o++++9++++HIxCJ2VAKGt0
nEJExlX28U1+AFi4xY1jwGsQishmdRma7-YdGIgwj6c9TwZvXTXdQVB7vqlTwPiERiV+w
nDGup+qt1XJ29dEREGkA23++0++U+eqn-6hmHxUOT++++g+++++g+++-4GIl3LoZ29YF7
nKbBlXBFnQUlFo3J6Hwp99IcgGGpK82vBHGn6m0x89PPWtIf79kQfGAl9IQXBpIp7oIh8
n9B3HI51A8QtL80fB8yPZ8gZ6JIX9nwb79wzAGpQ+GWRb88FZtU-BmYlHG8r690s-aiDW
nuCYHeOA+B2s5McuCEfWfenR6nBTT9wH17t8L0qF5d8hXY2wYo66UcBY8E8Bn3T9nYZC-
nF2uZ5WwL+3-9+E6I+-E++U+6+53ekG61hKycI+A++1Y6+++5++++++++++2+6+++++++
n++-2EJYiEY3II2g-+VE+3++0++U+44f-6b10r7DI++++M+2+++Y++++++++++E+U++++
nREA++2F-GIlN9Y7-J3-9+E6I+-E++U+6+07ekG6YGq2rD++++1o++++8++++++++++2+
n6++++5+2++-LFIJ9H3YiEY3II2g-+VE+3++0++U+6af-6WF9MHQw++++DE++++g+++++
n+++++E+U++++p+E++2pDHZF6H3YiEY3II2g-+VE+3++0++U+eqn-6hmHxUOT++++g+++
n++g++++++++++E+U++++CEI++2N7H2JTGIEiF2ZOI2g3-U+++++3++I+3U2+++24++++
-++g+
*XXBUG Version 3.00 by Chad Wagner


... Douglas.Myers%270-720@mdtnbbs.com
-!- Blue Wave/DOS v2.20
 ! Origin: Howdy's Whistle Stop  Summerdale PA  717 732 6820 (1:270/720)

 Area: Batch Language Programming                     FI 
  Msg#: 448                                          Date: 01 Jun 97  09:19:00
  From: Benjamin L Mcgee                             Read: Yes    Replied: No
    To: All                                          Mark:
  Subj: WHEREIS.BAT revisited

Here's my WHEREIS.BAT, I added a PATH search to it's capabilities.

@echo off
:: WHEREIS.BAT
::

if "%1"=="" goto use
if "%2"=="" goto default

for %%d in (dir DIR) do if "%%d"=="%1" goto dir
for %%b in (both BOTH) do if "%%b"=="%1" goto both
for %%p in (path PATH) do if "%%p"=="%1" goto path
goto default

:dir
   shift
   if "%1"=="" goto end
   echo Searching for directories named %1 ...
   dir /ad/b/s %1 | MORE
goto dir

:file
   shift
:default
   if "%1"=="" goto end
   echo Searching for files named %1 ...
   dir /a-d/b/s %1 | MORE
goto file

:both
   shift
   if "%1"=="" goto end
   echo Searching for files or directories named %1 ...
   dir /b/s %1 | MORE
goto both

:path
   shift
   if "%1"=="" goto end
   echo Searching the PATH for files named %1 ...
   for %%p in (%PATH%) do dir /a-d/b/s %%p\%1 | MORE
goto path


:use
   echo.
   echo WHEREIS.BAT
   echo.
   echo USE:  WHEREIS [DIR or BOTH or PATH] filespec1 [filespec2, etc, ...]
   echo WHEREIS filespec1 [filespec2]
   echo        searches for files
   echo WHEREIS DIR filespec1 [filespec2]
   echo        searches for directories
   echo WHEREIS BOTH filespec1 [filespec2]
   echo        searches for both files and directories
   echo WHEREIS PATH filespec1 [filespec2]
   echo        searches the path for files
   echo.

:end

set | find "windir" > nul
if not errorlevel 1 pause



*Editing is a rewording activity.

e-mail:  benjamin.l.mcgee@purgatorie.org
NET-MAIL: Benjamin L McGee on 1:15/7

-!- FLAME v1.1
 ! Origin: Purgatoire BBS, 719-846-0140, Trinidad, CO, V.34 (1:15/7)

 Area: Batch Language Programming                     FI 
  Msg#: 449                                          Date: 03 Jun 97  03:25:10
  From: Douglas Myers                                Read: Yes    Replied: No
    To: Vernon Frazee                                Mark:
  Subj: Fast parsing

    Vern... could you look over this modification of a batch file
    you wrote a while back?  I was trying to speed up the parsing
    routines as this took about ten seconds to run on my system, and
    believe I've stumbled onto a few techniques which may be new.
    At any rate, they speed up the batch file execution about 3.5
    times.

    The significant modifications are mostly contained in three
    lines from this batch file:

     rem>%mm%
     ren ???????? ??
     for %%a in (*) do set mm=%%a

     The month information is still in the form of "06-03-1997"
     which gets shortened to "06-03-19" when written to a zero byte
     file.  The DOS RENAME function then strips all but the first
     two digits from the filename.  Then the parsed filename is put
     back into the environment using the FOR..IN..DO loop.   This is
     much faster than stripping the right digits using the MODE
     trick.

     The big savings in time, though, came from stripping the left
     digits to get to the YEAR information:

    :GetYearLoop --------------------------------------------
     if (%~%)==(xxxxxxxx) goto GotYear
     for %%a in (/%yy%) do set yy=%%a
     set ~=x%~%
     goto GetYearLoop

     The significant difference in time here is that I don't have to
     write any temporary files eight times over.  The FOR..IN..DO
     loop seems perfectly adequet for both stripping one character
     from the left and also setting the %yy% variable.

     Look 'em over... I think we have some tools here.


    :+------------------------------------------------------+
    @echo off
    :+------------------------------------------------------+
    :| Example of how to put two digit Month, Day, and Year |
    :| into environment variables MM, DD, & YY respectively |
    :| (modified for faster purge, dcm)                     |
    :+------------------------------------------------------+
     for %%x in (dt mm dd yy ~) do set %%x=
    :GetDate ------------------------------------------------
     echo.|date>curren.bat
     echo set dt=%%4>current.bat
     call curren.bat
     del curre*.bat
     for %%x in (mm dd yy) do set %%x=%dt%
    :GotDate ------------------------------------------------
     echo     Date: %dt%
     set dt=
    :GetMonth -----------------------------------------------
     md $$temp$$
     cd $$temp$$
     rem>%mm%
     ren ???????? ??
     for %%a in (*) do set mm=%%a
     cd ..
     deltree /y $$temp$$\>nul
    :GotMonth -----------------------------------------------
     echo    Month: %mm%
     cd $$temp$$
     rem>%dd%
     ren ???????? ?????
     for %%a in (*) do set dd=%%a
     cd ..
     deltree /y $$temp$$>nul
    :GetDayLoop
     if (%~%)==(xxx) goto GotDay
     for %%a in (/%dd%) do set dd=%%a
     set ~=%~%x
     goto GetDayLoop
    :GotDay -------------------------------------------------
     set ~=
     echo      Day: %dd%
    :GetYearLoop --------------------------------------------
     if (%~%)==(xxxxxxxx) goto GotYear
     for %%a in (/%yy%) do set yy=%%a
     set ~=x%~%
     goto GetYearLoop
     :GotYear
     set ~=
     echo     Year: %yy%
    :Done ---------------------------------------------------
     echo Filename: %yy%%mm%%dd%
    :End ---------------------------------------------- -vjf-

-!- Telegard v3.02/mL
 ! Origin: Howdy's Whistle Stop  Summerdale PA  717 732 6820 (1:270/720)

 Area: Batch Language Programming                     FI 
  Msg#: 450                                          Date: 03 Jun 97  03:27:35
  From: Douglas Myers                                Read: Yes    Replied: No
    To: All                                          Mark:
  Subj: Fast Purge

@echo off
goto START

        Demonstration - deletes one character from either the right
        or left of the envar PARSE - this is an all DOS approach
        offering improved speed over the method which writes
        temporary batch files.  It uses file masking to delete
        right characters and FOR..IN..DO looping to report file
        names to the environment.

:START
if (%parse%)==() goto WARNING
if (%1)==(left) goto LEFT
if (%1)==(right) goto RIGHT
goto SYNTAX

:SYNTAX
echo.
echo     SYNTAX:  PARSE {left or right}
echo              (string to be parsed must be in the
echo              environment variable PARSE)
echo.
goto END

:WARNING
echo.
echo    WARNING:  You have not set the PARSE environment variable.
echo.
goto END

:LEFT
md $$temp$$
cd $$temp$$
rem>%parse%
if exist ? set parse=
if exist ? goto CLEANUP
for %%a in (/%parse%) do set parse=%%a
goto CLEANUP

:RIGHT
md $$temp$$
cd $$temp$$
rem>%parse%
set len=
goto FINDLENGTH

:FINDLENGTH
  if exist ?%len% goto MASKRIGHT
  set len=?%len%
goto FINDLENGTH

:MASKRIGHT
if (%len%)==() set parse=
if (%len%)==() goto CLEANUP
ren ???????? %len%
for %%f in (*) do set parse=%%f
goto CLEANUP

:CLEANUP
cd ..
deltree /y $$temp$$>nul
set len=
echo PARSE=%parse%
goto END

:END

-!- Telegard v3.02/mL
 ! Origin: Howdy's Whistle Stop  Summerdale PA  717 732 6820 (1:270/720)

 Area: Batch Language Programming                     FI 
  Msg#: 438                                          Date: 09 Jun 97  08:52:39
  From: Vernon Frazee                                Read: Yes    Replied: No
    To: Tony Lohrey                                  Mark:
  Subj: Need Help With For-In-Do

    Hello Tony,

TL> Hello Steve!
TL> I hate to answer your question with another question, but I have had
TL> similar problems and wanted to act upon a list of directories such
TL> as:
TL>   For %x in (*.) do wrkdir %x
TL> Which would execute the WRKDIR.BAT file for every subdirectory of
TL> the current dir. The (*.) returns nothing. I've also tried (*.\.)
TL> and other silly permutations. No luck.

    With the following SWEEP.BAT in one of the directories in your
    PATH, the command to do what you want would be:

      SWEEP CALL WRKDIR.BAT

    (Tip: Make sure you are in the correct directory before you start).

      @echo off
      :SWEEP.BAT - Original from PC Computing
       if not (%1)==() goto Begin
      :Syntax -----------------------------------------------------
       echo    Name: SWEEP.BAT
       echo Purpose: Execute specified command in every directory
       echo  Syntax: SWEEP command [parameters]
       goto End
      :Begin ------------------------------------------------------
       if (%1)==(?) goto Syntax
       if (%1)==(/?) goto Syntax
       set SWEEP=%1 %2 %3 %4 %5 %6 %7 %8 %9
       cls
       echo Creating a list of all directories on current drive ...
       echo @prompt set CurrentDIR=$p>tmptmp.bat
       command /e:2048 /c tmptmp.bat>director.bat
       del tmptmp.bat | call director.bat
       echo @echo off>director.bat
       echo prompt $g$h>>director.bat
       echo cd %%1>>director.bat
       echo %%SWEEP%%>>director.bat
       echo cd %%CurrentDIR%%>>director.bat
       chkdsk/v|find "Directory"|find "%CurrentDIR%">tmptmp.lst
       echo exit>>tmptmp.lst
       command<tmptmp.lst
       echo Processing complete.
      :Cleanup ----------------------------------------------------
       for %%x in (tmptmp.lst director.bat) do if exist %%x del %%x
       for %%x in (CurrentDIR SWEEP) do set %%x=
      :End --------------------------------------------------------

    Vernon Frazee

    Fidonet Netmail: 1:135/71.17  Internet email: vfrazee@usa.net  -vjf-

-!- Terminate 4.00/Pro
 ! Origin: Vern's Point * Hollywood Lakes, Florida * USA * (1:135/71.17)

 Area: Batch Language Programming                     FI 
  Msg#: 442                                          Date: 11 Jun 97  05:19:50
  From: Vernon Frazee                                Read: Yes    Replied: No
    To: Dave Fleming                                 Mark:
  Subj: time hog

    Hello Dave,

RR> LogOut is a memory resident program designed to send keystrokes to
RR> the keyboard buffer of a PC after a specified period of inactivity
RR> has been exceeded.

DF> Thanks for the reply, but I don't think this one will help. :(  If
DF> my BBS had no mail to send and sat idle for a few mins then LOGOUT
DF> would try to call my INet provider - while the BBS is still running.
DF> I need something that will check for existance of a file every 10 to
DF> 30 seconds or so and sleep in between.  I guess I'll see if I can
DF> write it. :)

    If you're running under a multitasker the following BATch file
    snippet is an example of one way to do it:

@echo off
:Loop
 echo.
 ver|time|find "Current"
 echo Pausing for 30 seconds before checking for C:\FOOBAR.TMP ...
 choice/c:ac/t:c,30/n"(Or press [A] to Abort, [C] to Check now (A/C)): "
 if errorlevel 1 if not errorlevel 2 goto End
 if exist C:\FOOBAR.TMP goto DoIt
 echo.
 echo C:\FOOBAR.TMP does not exist yet
 goto Loop
:DoIt
 echo.
 echo C:\FOOBAR.TMP exists!
 echo Doing whatever ...
 rem ... Put whatever you need to do in here ...
 echo DELeting C:\FOOBAR.TMP ...
 del C:\FOOBAR.TMP
 goto Loop
:End

    It pauses for 30 seconds then checks for a file named C:\FOOBAR.TMP.

    If it doesn't exist, it pauses for another 30 seconds and checks
    again; etc., etc., etc.  When it does find C:\FOOBAR.TMP, it jumps
    to label ":DoIt", does whatever you need it to do, deletes
    C:\FOOBAR.TMP and then starts the whole process all over again.

    You can press [A] to Abort or [C] to Check now during the pausing 30
    seconds :Loop.

    Note: Requires DOS's CHOICE and FIND (somewhere in the PATH).


    Vernon Frazee

    Fidonet Netmail: 1:135/71.17  Internet email: vfrazee@usa.net  -vjf-

-!- Terminate 4.00/Pro
 ! Origin: Vern's Point * Hollywood Lakes, Florida * USA * (1:135/71.17)

 Area: Batch Language Programming                     FI 
  Msg#: 447                                          Date: 12 Jun 97  14:19:00
  From: Karl Springer                                Read: Yes    Replied: No
    To: Benjamin L McGee                             Mark:
  Subj: WHEREIS.BAT REVISITED

BLM> if exist %temp%\dir goto start
   > if exist %temp%\both goto start
   > if exist %temp%\path goto start

A for-in-do implementation:

for %%a in (dir both path) do if exist %temp%\%%a goto start

Karl   karl.springer@tsbbs.com



-!- PCBoard (R) v15.3/10
 ! Origin: Fidonet * West Los Angeles BBS (1:102/635)

 Area: Batch Language Programming                     FI 
  Msg#: 419                                          Date: 20 Jun 97  09:21:54
  From: Vernon Frazee                                Read: Yes    Replied: No
    To: Wayne Howard                                 Mark:
  Subj: Auto-Increment Filename

    Hello Wayne,

WH> Does anyone know how to auto increment the naming of files from
WH> within a batch file?  I have a batch file that calls a program that
WH> produces an output file.  If I run it a second time, it naturally
WH> wants to overwrite the old file.  Since I have it running as an
WH> automated process, I would like to rename the old file to a new name
WH> each time, but keep the old files, (I.E. file1.ext, file2.ext,
WH> file3.ext, etc.)  Any ideas on how to do this?

    The following is but one simple solution and is based on three
    assumptions:

      1) You are running MS-DOS version 6.nn or higher,

      2) You have MS-DOS's FIND.EXE somewhere in your PATH,

      and last but not least

      3) Your "FILEnnnn.EXT" files are the ONLY files kept
         within a particular directory.

    If this is NOT the case, click [--->] to go on to the next message.
    <grin>


    Let's say for example that your "FILEnnnn.EXT" files are kept in
    directory "K:\TEST".  If you did the command:

      dir /a-d k:\test

    the output might look something like so:

       Volume in drive K is RAMDRIVE
       Directory of K:\TEST

      FILE1    EXT             0 06-20-97   9:20a
      FILE2    EXT             0 06-20-97   9:20a
      FILE3    EXT             0 06-20-97   9:20a
      FILE4    EXT             0 06-20-97   9:20a
              4 file(s)              0 bytes
                            19,265,152 bytes free

    What we need from this listing is how many files there are plus 1.
    (In this particular case we need the number "5").

    Note how many lines contain the ":" character.  It's in the time
    stamp for each file _plus_ the one that follows the drive letter.
    (That's the "5" we need).

    Because of this simple fact we can now use FIND's "/c" (count)
    parameter, like so:

      dir /a-d k:\test|find /c ":"
                      ~~~~~~~~~~~~
    to return the single character:

      5

    Now all we need to do is capture that:

      @echo off
      :EXAMPLE.BAT - Requires FIND.EXE (somewhere in the PATH)
      : Syntax: EXAMPLE name_of_DIR_containing_your_FILEnnnn.EXT_files
      :Example: EXAMPLE K:\TEST
       if (%1)==() goto End
       cls
       dir %1
       dir %1|find /v "."|find /c ":">~.bat
       echo.>>~.bat
       date<~.bat |find "Enter">~.bat
       rem ------^--- This space Must be here
       echo set Next#=%%4>enter.bat
       for %%x in (call del) do %%x ~.bat
       del enter.bat
       echo.
       echo Next number to use, "%Next#%", is now in evar "Next#"
      :End

    Bingo!  The next number you need to use in your next "FILEnnnn.EXT"
    file is now in environment variable "Next#".              ~~~~

    Pretty simple stuff, eh?  <grin>


    Vernon Frazee

    Fidonet Netmail: 1:135/71.17  Internet email: vfrazee@usa.net  -vjf-

-!- Terminate 4.00/Pro
 ! Origin: Vern's Point * Hollywood Lakes, Florida * USA * (1:135/71.17)

 Area: Batch Language Programming                     FI 
  Msg#: 445                                          Date: 27 Jun 97  12:30:00
  From: Roy Reed                                     Read: Yes    Replied: No
    To: All                                          Mark:
  Subj: omission/mistake

    The recently submitted pad.bat in ZDCHOICE.ZIP was in error.
 A corrected version is below.  To justify the opposite way, change
 the line    set {n}=%[%%{n}%   to    set {n}=%{n}%%[%
-----------------------------------------------
 @echo off
 if not '%3'=='' goto reenter
 if '%2'=='' %0 %1 0000000000
 set {n}=%1
 >{t}.bat echo;; | choice /c=%1; set
 >>{t}.bat echo;; | choice /c=%2; %0=
 {t}
 :reenter
 del {t}.bat
 for %%v in (%[%) do shift
 set [=
 :loop
 if not '%2'==']?' set [=%[%%2
 shift
 if not '%2'=='' if not  '%2'==']?' goto loop
 set {n}=%[%%{n}%
 set [=
 echo envar {n} is %{n}%
-----------------------------------------------
Also omitted  was NUMCOMP.BAT, below
-----------------------------------------------
 @echo off
 echo Comparing "%1" with "%2"
 call pad %1
 set n1=%{n}%
 call pad %2
 call compare %n1% %{n}%
 for %%v in (1 2 3) do if errorlevel %%v goto Label%%v
 goto end
 :Label1
 echo %1 is less than %2
 goto end
 :Label2
 echo %1 is equal to %2
 goto end
 :Label3
 echo %1 is greater than %2
 :end
-----------------------------------------------
      Roy
 ! Origin: The GIFfer BBS, 75+gig, (813)969-2761 (1:377/50)

 Area: Batch Language Programming                     FI 
  Msg#: 449                                          Date: 02 Jul 97  17:21:57
  From: Vernon Frazee                                Read: Yes    Replied: No
    To: Larry Rink                                   Mark:
  Subj: doskey

    Hello Larry,

LR> I'm trying to write a Doskey macro like this:
LR>   Doskey Tree=Tree | More
LR> Doesn't work!  Why?

    It won't work because you need to substitute the DOSKEY's code for
    the pipe character, like so:

      doskey=tree$Bmore
                 ^^-----------(DOSKEY code for the "|" character)

    If you'd like for this to be able to work correctly when you specify
    a particular drive on the command line, change it to:

      doskey=tree $1$Bmore
                  ^^----------(So you can do something like "tree a:")

    If you'd also like to be able to use the TREE.COM "/F" and/or "/A"
    parameters you would need to change it to:

      doskey=tree $1$2$3$Bmore
                    ^^^^------(Room for 2 more command line parameters)

    Tip: Since you are assigning a macro to the string "TREE", when you
         type "TREE" (not the quotes) DOS will run your new TREE macro
         instead of C:\DOS\TREE.COM like it normally does.  To get
         around this, insert a space and then type it. (i.e., " TREE").


    Vernon Frazee

    Fidonet Netmail: 1:135/71.17  Internet email: vfrazee@usa.net  -vjf-

-!- Terminate 4.00/Pro
 ! Origin: Vern's Point * Hollywood Lakes, Florida * USA * (1:135/71.17)

 Area: Batch Language Programming                     FI 
  Msg#: 446                                          Date: 03 Jul 97  12:38:40
  From: Vernon Frazee                                Read: Yes    Replied: No
    To: Christopher Greaves                          Mark: Reply Save
  Subj: nasty old envars

    Hello Christopher,

CG> For example, when I use SET at the DOS prompt, I see:
CG>   COMSPEC=C:\COMMAND.COM
CG>   TEMP=c:\temp
CG>   DEBUG=off
CG>   PROMPT=$p$g
    <...snip...>
CG> I need a batch file which I can call SUBS.BAT and invoke it as:
CG>   SUBS debug
CG> The batch file SUBS needs to use %1 as the dummy parameter,
CG> translate that into DEBUG and place the value "off" into a text
CG> file.
CG> So far I have not been able to pass an environment variable as a
CG> parameter to a batch file. I cannot have %debug% in the batch file,
CG> because the batch file must respond to whatever environment variable
CG> the user passes on.

    Here's an example that should work with MS-DOS v5.00 or higher:

      @echo off
      :EVAR.BAT - Type "EVAR /?" (not the quotes) for brief help
       if not (%1)==() goto ParmChk
      :Syntax ----------------------------- (Display brief help)
       echo.
       echo     Name: EVAR.BAT (Environment VARiable)
       echo.
       echo  Purpose: Put the value of a specified environment
       echo           variable into a file named "EVAR.TXT"
       echo.
       echo   Syntax: EVAR name_of_environment_variable
       echo.
       echo  Example: EVAR comspec
       echo.
       echo Requires: DOS's FIND.EXE (somewhere in the PATH)
       echo.
       echo     Note: Will not work with lowercase environment
       echo           variable names (e.g., "windir=C:\WINDOWS")
       echo.
       goto End
      :ParmChk ---- (If user's asking for help, back to Syntax:)
       if (%1)==() goto Syntax
       if (%1)==(?) goto Syntax
       if (%1)==(/?) goto Syntax
      :UPcase --------------------- (UPPERcase user's parameter)
       path>~.bat
       path %1
       set ~=%path%
       for %%x in (call del) do %%x ~.bat
      :FindEvar ------ (Use FIND to search for user's parameter)
       set|find "%~%=">~.tmp
       copy ~.tmp+,,>nul
       if exist ~.tmp goto FoundIt
       echo Environment variable "%~%" is not in the environment
       goto End
      :FoundIt --------------- (Start displaying what was found)
       cls
       del ~.tmp
       echo EVAR.BAT has found an environment variable named:
       echo.
       echo %~%
       echo.
       echo in the environment as follows:
       echo.
       set|find "%~%="
       echo.
       echo The value of which:
       echo.
      :------- (Get value of environment variable into EVAR.TXT)
       echo @prompt echo %%%~%%%$gevar.txt>~.bat
       command /c ~.bat>~~.bat
       for %%x in (call del) do %%x ~~.bat
       del ~.bat
       set ~=
      :----------------------- (and continue displaying results)
       type EVAR.TXT
       echo.
       echo has been placed in the following file:
       dir EVAR.TXT
       echo.
       echo All processing complete.
      :End ----------- (That's it; We're done) ----------- -vjf-

    And here's another with the 'fluff' stripped:

      @echo off
       if (%1)==() echo EVAR name_of_evar
       if (%1)==() goto End
       path>~.bat
       path %1
       set ~=%path%
       for %%x in (call del) do %%x ~.bat
       set|find "%~%=">~.tmp
       copy ~.tmp+,,>nul
       if exist ~.tmp goto FoundIt
       echo Evar "%~%" not found
       goto End
      :FoundIt
       del ~.tmp
       echo @prompt echo %%%~%%%$gevar.txt>~.bat
       command /c ~.bat>~~.bat
       for %%x in (call del) do %%x ~~.bat
       type evar.txt
       del ~.bat
       set ~=
      :End

    The 'fluffed' version is pretty much self-explanatory but, if you
    have any questions or comments don't hesitate to give me a shout.


    Vernon Frazee

    Fidonet Netmail: 1:135/71.17  Internet email: vfrazee@usa.net  -vjf-

-!- Terminate 4.00/Pro
 ! Origin: Vern's Point * Hollywood Lakes, Florida * USA * (1:135/71.17)

 Area: Batch Language Programming                     FI 
  Msg#: 449                                          Date: 05 Jul 97  00:05:00
  From: Douglas Myers                                Read: Yes    Replied: No
    To: Kellie Jrgensen                             Mark: Reply Save
  Subj: random selection

 KJ> Does anywone know how to make a batch file give a random selection.
 KJ> yatzy:
 KJ> echo the dize is trown
 KJ> [random selection between 1 and 6. 5 times]
 KJ> echo the dize shows %1 %2 %3 %4 %5


        Well, here's one off the top of my head (well, with
        significant time spent scratching).  It works for DOS 6
        versions, but not for DOS 7 (WIN 95).  It basically gets a
        pseudo-random number by grabbing the hundreths of a second
        display from the time display and then throwing out 7,8,9,
        and 0 if they come up.

        And I did this without even looking at the examples I
        memorized from Vernon :)


        ::--------------- Yahtzee.bat ---------------------
        @echo off
        echo.
        echo            The dice are thrown!
        echo                                     
        echo                                    
        echo                                       
        echo                                   
        echo.
        :BIGLOOP
        if (%bigcount%)==() goto END
        set bigcount=%bigcount%
        :BYPASS
        echo.|time>curren.bat
        echo set random=%%3>current.bat
        call curren
        del curr*.*
        :LOOP
        if (%count%)==() goto DONE
        set count=%count%
        :BYPASS
        for %%a in (/%random%) do set random=%%a
        goto LOOP
        :DONE
        set count=
        md $temp
        cd $temp
        rem>%random%
        ren ?? ?
        for %%a in (?) do set random=%%a
        del ?
        cd ..
        rd $temp
        if (%random%)==(0) goto BYPASS
        if (%random%)==(9) goto BYPASS
        if (%random%)==(8) goto BYPASS
        if (%random%)==(7) goto BYPASS
        set dice=%dice%%random%
        cls
        for %%a in (x x x x x x) do echo.
        echo                                  %bigcount%
        echo                    The dice show %dice%
        for %%a in (x x x x) do echo.
        goto BIGLOOP
        :END
        for %%a in (count bigcount random dice) do set %%a=
        :: ------------------------------------------------

-!- Blue Wave/DOS v2.20
 ! Origin: Howdy's Whistle Stop  Summerdale PA  717 732 6820 (1:270/720)

 Area: Batch Language Programming                     FI 
  Msg#: 450                                          Date: 05 Jul 97  02:45:45
  From: Douglas Myers                                Read: Yes    Replied: No
    To: Kellie Jrgensen                             Mark: Reply Save
  Subj: random selection

 KJ> Does anywone know how to make a batch file give a random selection.
 KJ> yatzy:
 KJ> echo the dize is trown
 KJ> [random selection between 1 and 6. 5 times]
 KJ> echo the dize shows %1 %2 %3 %4 %5

        Okay, here's another version which should work with DOS7
        (WIN 95), though I tested it under DOS6.

        ::--------------- yz.bat ------------------------------
        @echo off
        if (%1)==(!) goto CHOICE
        if (%1)==([) goto RANDOM
        goto START

        :CHOICE
        echo;;|choice /c:;%2; "%0 ">curren1.bat
        curren1
        :RANDOM
        for %%a in (x x x x x x x x x x) do shift
        set random=%1
        goto END

        :START
        echo.
        echo            The dice are thrown!
        echo                                     
        echo                                    
        echo                                       
        echo                                   
        echo.
        :BIGLOOP
        if (%bigcount%)==() goto CLEAN
        set bigcount=%bigcount%
        :BYPASS
        echo.|time>currens.bat
        echo %0 ! %%3>current.bat
        call currens
        if (%random%)==(0) goto BYPASS
        if (%random%)==(9) goto BYPASS
        if (%random%)==(8) goto BYPASS
        if (%random%)==(7) goto BYPASS
        set dice=%dice%%random%
        cls
        for %%a in (x x x x x x) do echo.
        echo                                  %bigcount%
        echo                    The dice show %dice%
        for %%a in (x x x x) do echo.
        goto BIGLOOP
        :CLEAN
        del curren?.bat
        for %%a in (count bigcount random dice) do set %%a=
        :END
        ::--------------- yz.bat ------------------------------


... Douglas.Myers%270-720@mdtnbbs.com
-!- Blue Wave/DOS v2.20
 ! Origin: Howdy's Whistle Stop  Summerdale PA  717 732 6820 (1:270/720)

 Area: Batch Language Programming                     FI 
  Msg#: 444                                          Date: 08 Jul 97  00:38:30
  From: Douglas Myers                                Read: Yes    Replied: No
    To: Kim Bjoern                                   Mark:
  Subj: Fixed Day of the week

 KB> I have a batcjob running making som stats posting in a local stats
 KB> echo. It works fine and i usually run it every Friday.

 KB> As far as I'm concerned there is a batch workaround this? Does anyone
 KB> of you guys know how to run the executables *only* on fridays?

        Sure.  Run DAY.BAT at least once a day, and it will run
        your own FRIDAY.BAT only on Fridays.  It also runs other
        timely batch files and offers a ZLF file for advanced use,
        as noted in the comments:


---------------------- DAY.BAT -----------------------------
@echo off
if (%1)==([!) goto SETENV
echo.
echo           DAY.BAT - generates a zero byte flag file for each
echo                      day of the year in the form of SUN0608.DAY.
echo                    - Runs batch files in this order:
echo                      DAILY, dow, mmdd, WEEKLY, MONTHLY, YEARLY, yyyy
goto GETDATEINFO


       CURRENT2.BAT (see GETDATEINFO) supplies the replacable (%x)
       parameters for SETENV below

:SETENV
set ~mm=%2%3
set ~dd=%5%6
shift
shift
set ~yy=%6%7%8%9
goto FINIS


        CURREN.BAT below gets info from TIME in the form of "Current
        date is Sun 06-01-1997."  CURRENT.BAT writes the third
        word (%3 is SUN) and fourth word (%4 is 06-01-1997) to the
        environment.  CHOICE feeds CURRENT2.BAT with the digits of this
        date seperated, to be reassembled in more convenient form in
        SETENV below.

:GETDATEINFO
echo.|date>current1.bat
echo set ~dw=%%3>current.bat
echo set ~dt=%%4>>current.bat
call current1
echo !|choice /c:!%~dt%! "%0 ">current2.bat
call current2
del curren*.bat
set ~dt=
if exist %~dw%%~mm%%~dd%.day goto ALREADY
if exist *.day del *.day
rem>%~dw%%~mm%%~dd%.day
goto RUNBATS


        Run the following batch files if they exist

:RUNBATS
if exist daily.bat                        call daily.bat
if exist %~dw%.bat                        call %~dw%.bat
if exist %~mm%%~dd%.bat                   call %~mm%%~dd%.bat
if exist sun????.day if exist weekly.bat  call weekly.bat
if exist ?????01.day if exist monthly.bat call monthly.bat
if exist ???0101.day if exist yearly.bat  call yearly.bat
if exist ???0101.day if exist %yy%.bat    call %yy%.bat
echo.
echo           DAY.BAT is done ...
goto END


        Skip RUNBATS if DAY.BAT already did it's thing

:ALREADY
echo.
echo           DAY.BAT has already run today...
goto END


        Clean environment and exit.  Delete this section if
        you want to keep the variables set.

:END
for %%d in (dw mm dd yy) do set ~%%d=

:FINIS
---------------------- DAY.BAT -----------------------------

... Douglas.Myers%270-720@mdtnbbs.com
-!- Blue Wave/DOS v2.20
 ! Origin: Howdy's Whistle Stop  Summerdale PA  717 732 6820 (1:270/720)

 Area: Batch Language Programming                     FI 
  Msg#: 449                                          Date: 07 Jul 97  13:56:06
  From: Vernon Frazee                                Read: Yes    Replied: No
    To: Kim Bjoern                                   Mark:
  Subj: Fixed Day of the week

    Hello Kim,

KB> I have a batcjob running making som stats posting in a local stats
KB> echo. It works fine and i usually run it every Friday.
KB> As far as I'm concerned there is a batch workaround this? Does
KB> anyone of you guys know how to run the executables *only* on
KB> fridays?
KB> Answers received with appreciation.

    Here in the USA, when you enter the command:

      DATE

    DOS returns something similar to the following:

      Current date is Mon 07-07-1997
      Enter new date (mm-dd-yy):

    Note the "Mon" on the first line.  On Friday it will be "Fri".
    (Sun=Sunday, Mon=Monday, Tue=Tuesday, Wed=Wednesday, Thu=Thursday,
    Fri=Friday, Sat=Saturday).

    Here is an example BAT that looks for string "Fri" in the date. If
    it finds "Fri", it does one thing; If not, it does another:

      @echo off
      :EXAMPLE.BAT - MS-DOS v6.nn example of how to
      :              run something only on Friday.
      :              Requires DOS's FIND (in PATH)
      :Is today Friday?
       ver|date|find "Fri">nul
       if errorlevel 1 goto Nope
      :Yep
       echo Today is Friday!
       rem ***- Put the command to run your program here -***
       goto End
      :Nope
       echo Today is not Friday
      :End


    Vernon Frazee

    Fidonet Netmail: 1:135/71.17  Internet email: vfrazee@usa.net  -vjf-

-!- Terminate 4.00/Pro
 ! Origin: Vern's Point * Hollywood Lakes, Florida * USA * (1:135/71.17)

 Area: Batch Language Programming                     FI 
  Msg#: 450                                          Date: 09 Jul 97  06:09:27
  From: Michael Kleefeld                             Read: Yes    Replied: No
    To: Kim Bjoern                                   Mark:
  Subj: Fixed Day of the week

Hi Kim


 KB> As far as I'm concerned there is a batch workaround this? Does anyone
 KB> of you guys know how to run the executables *only* on fridays?

This little tool ..

===wd.dbg===
n WD.COM
e100 B4 "*"CD "!"B4 "L"CD "!"
rCX
08
w
q
===debug<wd.dbg===

.. arrives with errorlevel 0 to 6 (sun=0,mon=1,..). And this batch ..

===everyfri.bat===
@echo off
 rem performed to run on every friday
 rem to run on monday change 5+6 to 1+2
wd.com
if errorlevel 5 if not errorlevel 6 goto permit
if exist %temp%\wd_done.sem del wd_done.sem
goto nop
:permit
if exist %temp%\wd_done.sem goto nop
....   ; your program(s)
rem> %temp%\wd_done.sem
goto end
:nop
echo nothing to do  ;)
:end
===

.. calls your program (change this for your use) only one! time on
every friday. Integrate it to your 'autoexec.bat' or CALL it from
somewhere else.

note: i think, it's possible to solve this in batch-only, but i need
      it sometimes inside of other batches.


greets |X|
       | |icha

-!-
 ! Origin: -<  contact  >- (2:2468/6034.29)

 Area: Batch Language Programming                     FI 
  Msg#: 436                                          Date: 20 Jul 97  08:31:35
  From: Vernon Frazee                                Read: Yes    Replied: No
    To: Jeff Brielmaier                              Mark:
  Subj: basic-batch

RR> STRINGS 2.6 - unoffical release of STRINGS

JB> ... (or an FTP address to find it at) ?

    http://www.uxbinfo.com/412/STRING26.ZIP


    Vernon Frazee

    Fidonet Netmail: 1:135/71.17  Internet email: vfrazee@usa.net  -vjf-

-!- Terminate 4.00/Pro
 ! Origin: Vern's Point * Hollywood Lakes, Florida * USA * (1:135/71.17)

 Area: Batch Language Programming                     FI 
  Msg#: 438                                          Date: 28 Jul 97  17:46:49
  From: Vernon Frazee                                Read: Yes    Replied: No
    To: Jerry Hodges                                 Mark:
  Subj: Alterchk.bat

    Hello Jerry,

VF> Did just that back on the 20th.  Two versions of "ALTERCHK.BAT" in
VF> fact.  A bare-bones and a full version.  If you haven't seen 'em by
VF> now give me a holler and I'll repost.

JH> I haven't seen them.  They must be lost on the Dallas - Fort Worth
JH> turnpike.  I would appreciate a repost.  Thanks...

-------------------------------- Repost --------------------------------
RC> Could you post the nessary debug detail to remove nag screen for
RC> MsDos622 CHKDSK..

JH> Wouldn't it be simpler to just change the eight bytes in Chkdsk.exe?
JH> I found them several years ago on the internet.
JH>   00003A38: E8 -> 90
JH>   00003A39: F9 -> 90
JH>   00003A3A: 04 -> 90
JH>   00003A3B: 72 -> 90
JH>   00003A3C: 09 -> F8
JH>   00003A46: E8 -> 90
JH>   00003A47: CE -> 90
JH>   00003A48: 04 -> 90

BL> I don't know where you came by this data, but it certainly was not
BL> in the CHKDSK.EXE with MS-DOS 6.22, whose total file size is
BL> 2FD1h.??  Further, there is no hit on a hex search for 04 72 09, or
BL> for E8 CE 04, both of which you indicate as three contiguous
BL> bytes.??  Could it be that you have one that is not PKLITE'd like
BL> mine??  Otherwise, it's a worthy idea.

JH> OOPS! I skipped a few steps. But as I said, the code was found
JH> several years ago and I have slept since then.
JH> CHKDSK is compressed with PKLITE.  Use UNP411.zip (a cardware
JH> program) or use PKLITE to uncompress.  When CHKDSK is uncompressed,
JH> it will be 21,120 bytes.  Patch with XE.exe (XE420.zip - a freeware
JH> hex editor). If you use debug subtract 100 from the locations given.
JH> The last step, not necessary but saves hard disk space is to use
JH> LZEXE91E.zip (another freeware program) or PKLITE to re-compress
JH> CHKDSK.EXE.
JH> Sorry for not giving all the instructions at the start. But you know
JH> it is true, Father Time does sneak up and beat the devil out of you.

    All that's really needed is MS-DOS v6.22's DEBUG and PKLITE v2.01.

    Because of the multiple commands and most folk's unfamiliarity with
    DEBUG though, it could stand a little automation.  Perfect scenario
    for a BATch file.

    The following is the brief version for those that KNOW they have all
    the tools necessary in their current PATH.  I'll enclose a version
    named ALTERCHK.BAT that checks to make sure in the next message.

      @echo off
      :See ALTERCHK.BAT's "Syntax" for requirements (next message)
       cls
       echo Altering copy of CHKDSK.EXE ...
       if not exist chkdsk.exe echo CHKDSK.EXE missing
       if not exist chkdsk.exe goto End
       pklite -xo chkdsk.exe chkdsk-.$$$
       echo e 3b38 90 90 90 90 f8>debug.scr
       echo e 3b46 90 90 90>>debug.scr
       for %%x in (w q) do echo %%x>>debug.scr
       debug chkdsk-.$$$<debug.scr
       copy chkdsk-.$$$ chkdsk-.exe
       pklite chkdsk-.exe
       for %%x in (debug.scr chkdsk-.$$$) do del %%x
       dir chkdsk-.exe
      :End


    See next message for the error-checking version: ALTERCHK.BAT ...
------------------------------------------------------------------------


    Vernon Frazee

    Internet: vfrazee@usa.net      WebPage: http://www.gate.net/~vfrazee

-!- Terminate 4.00/Pro
 ! Origin: Vern's Point * Hollywood Lakes, Florida * USA * (1:135/71.17)

 Area: Batch Language Programming                     FI 
  Msg#: 448                                          Date: 08 Aug 97  11:00:00
  From: Ricky Foltz                                  Read: Yes    Replied: No
    To: All                                          Mark:
  Subj: Trashcan?

Someone posted something about a batch file "trashcan" not too long ago. I
took the idea and made a few modifications. Result: these batches.

    [[[-]]] cut...

@echo off
rem      Based on a Fidonet BATPOWER post
rem      DEL.BAT - Run to "delete" files
rem
if "%1"=="" goto NoParams
if "%1"=="/y" goto Unconditional
if "%1"=="/Y" goto Unconditional
if not exist %1 goto NotFound
echo Deleting: %1 %2 %3 %4 %5 %6 %7 %8 %9
C:\DOS\RUSure                          <<--- Replace with CHOICE.COM
if errorlevel 2 call C:\DOS\DoDelete %1 %2 %3 %4 %5 %6 %7 %8 %9
echo
goto Done
:Unconditional
if not exist %2 goto NotFound
call C:\DOS\DoDelete %2 %3 %4 %5 %6 %7 %8 %9
echo
goto Done
:NotFound
echo File not found
echo
goto Done
:NoParams
echo Invalid number of parameters
echo
goto Done
:Done

@echo off
rem      DODELETE.BAT - used by DEL.BAT
for %%A in (%1) do if exist C:\area_51\%%A erase C:\area_51\%%A
for %%A in (%2) do if exist C:\area_51\%%A erase C:\area_51\%%A
for %%A in (%3) do if exist C:\area_51\%%A erase C:\area_51\%%A
for %%A in (%4) do if exist C:\area_51\%%A erase C:\area_51\%%A
for %%A in (%5) do if exist C:\area_51\%%A erase C:\area_51\%%A
for %%A in (%6) do if exist C:\area_51\%%A erase C:\area_51\%%A
for %%A in (%7) do if exist C:\area_51\%%A erase C:\area_51\%%A
for %%A in (%8) do if exist C:\area_51\%%A erase C:\area_51\%%A
for %%A in (%9) do if exist C:\area_51\%%A erase C:\area_51\%%A
c:\dos\red %1 C:\AREA_51               <<--- Replace all "red"s with "move"
if "%2"=="" goto Done
c:\dos\red %2 C:\AREA_51
if "%3"=="" goto Done
c:\dos\red %3 C:\AREA_51
if "%4"=="" goto Done
c:\dos\red %4 C:\AREA_51
if "%5"=="" goto Done
c:\dos\red %5 C:\AREA_51
if "%6"=="" goto Done
c:\dos\red %6 C:\AREA_51
if "%7"=="" goto Done
c:\dos\red %7 C:\AREA_51
if "%8"=="" goto Done
c:\dos\red %8 C:\AREA_51
if "%9"=="" goto Done
c:\dos\red %9 C:\AREA_51
:Done
echo Files "deleted" ...

@echo off
rem      Based on a Fidonet BATPOWER post
rem      WIPE.BAT - Run this to empty the recycling bin
rem
if not exist C:\AREA_51\*.* goto NoFiles
call C:\DOS\LOOKBIN.BAT
echo THIS WILL EMPTY THE RECYCLING BIN C:\AREA_51!!
C:\DOS\RUSure
if errorlevel 2 C:\DOS\DoWipe.bat
echo Glad you reconsidered...
goto End
:NoFiles
echo But the Recycling Bin C:\AREA_51 is empty!
echo
:End

@echo off
rem      DOWIPE.BAT - used by WIPE.BAT
echo y | ERASE C:\AREA_51\*.* > nul         <<--- You may want to use
echo Area 51 is now just a memory...              DELTREE /Y C:\AREA_51\
echo                                              instead...

@echo off
rem      LOOKBIN.BAT - shows contents of recycling bin
DIR C:\AREA_51 /w /p
echo

    [[[-]]] cut...

Before using these batches, hex-edit your command.com and find the DEL and
ERASE commands... leave ERASE alone and replace "DEL" with "xyz" so that it
can't be accessed. DON'T FORGET TO BACKUP YOUR COMMAND.COM FIRST!! For added
security, you can rename the DEL.BAT and change "ERASE" to anything you want
as long as it's in all caps. Numbers probably should not be used, and make
sure to change the ERASE commands in the above files. You should also replace
all occurances of "red" with "move". I'm using an old computer with Dos 3.3
which doesn't have the move utility so I have to use a 3rd party util. You
should also fix the C:\DOS\RUSure and Errorlevel lines to work with the choice
utility. And, make sure to create the C:\AREA_51 directory, or you can make
another directory and replace all the C:\AREA_51's with
C:\WhateverDirectoryYouChose. One more thing: The echo lines with nothing on
them are actually "ECHO " and an ASCII 255. The ASCII 255 makes the appearance
of a blank line. If you can make a 255 in your batch file, excellent. If not,
make do another way.

Why'd I do this? I thought the original post was a great idea but could use
some improvement. The DEL.BAT can accept up to nine parameters with any
combination of wildcards. For unconditional deletion include /Y as the first
parameter and no more than eight filenames/wildcards afterward. The
For-In-Do's in DODELETE.BAT make sure that the file you're "deleting" doesn't
already exist in Area 51 (recycling bin). If it already exists, it's erased to
make room for the "new" deleted file.

Do what you want with these batches, but don't tell me about it... :)

 [] Kamek's Sig (the short-short version): Internet (ricky.foltz@beginners.net)
... "But the coffeepot made the coolest explosion," said Jason.
>:) Tag-O-Matic V.12 Hey, ! Betcha don't have 87 Wayside.Taglines!



-!- PCBoard (R) v15.3/5
 ! Origin:  (1:106/8525)

 Area: Batch Language Programming                     FI 
  Msg#: 432                                          Date: 09 Aug 97  19:36:06
  From: Michael Marquart                             Read: Yes    Replied: No
    To: Steve Ross                                   Mark:
  Subj: BATCH MENU

 > Steve Ross said to All, on 06 Aug 97  14:52:00 <
 > Regarding "BATCH MENU" <

 Hi Steve.

 SR> hello if anyone can help me. i am trying to make a menu for my school
 SR> project.  i was woundering if there is a way of making the menu have a
 SR> highlighted bar go accross each selection in the menu, using Ansi and
 SR> the arrow keys, if you can help, would you please.

 Here is one method, posted by a denizen of this echo early last year:

 (replace all exclamation marks "!" with the ascii 27 character - the
 escape character)

 The only instruction I think that is nessessary is that the drop down
 menu items are selected with the right or left arrow keys, and not enter.

 (The result may not be exactly what you were looking for, but the technique
 of using the Ansi commands is a good example - and there's a neat trick in
 there too - tested with MSdos V6.22)

::========================================================================
rem Dropmenu.bat - By Ron Bruce 7/1/96

Rem Menu Bar

@echo off
echo ![2J
:A1
echo ![H![7m Accessories  ![0m Maintainence ![0m Other
choice /c:KMP /n > nul
if errorlevel 3 goto B1
if errorlevel 2 goto A2
goto A3
:A2
echo ![H![0m Accessories  ![7m Maintainence ![0m Other
choice /c:KMP /n > nul
if errorlevel 3 goto C1
if errorlevel 2 goto A3
goto A1
:A3
echo ![H![0m Accessories  ![0m Maintainence ![7m Other
choice /c:KMP /n > nul
if errorlevel 3 goto D1
if errorlevel 2 goto A1
goto A2

Rem Drop Menu 1

:B1
echo ![1;0H![0m Accessories
echo ![2;0H![7m Edit
choice /c:HPKM /n > nul
if errorlevel 3 edit
echo ![0m![2J
goto A1

Rem Drop Menu 2

:C1
echo ![1;15H![0m Maintainence
echo ![2;15H![7m Scandisk
echo ![3;15H![0m Defrag
choice /c:HPKM /n > nul
if errorlevel 3 scandisk
if errorlevel 2 if not errorlevel 3 goto C2
echo ![0m![2J
goto A2
:C2
echo ![1;15H![0m Maintainence
echo ![2;15H![0m Scandisk
echo ![3;15H![7m Defrag
choice /c:HPKM /n > nul
if errorlevel 3 defrag
if errorlevel 1 if not errorlevel 2 goto C1
echo ![0m![2J
goto A2
:D1
echo ![1;29H![0m Other
echo ![2;29H![7m Msav
echo ![3;29H![0m Msbackup
echo ![4;29H![0m Quit
choice /c:HPKM /n > nul
if errorlevel 3 msav
if errorlevel 2 if not errorlevel 3 goto D2
echo ![0m![2J
goto A3

Rem Drop Menu 3

:D2
echo ![1;29H![0m Other
echo ![2;29H![0m Msav
echo ![3;29H![7m Msbackup
echo ![4;29H![0m Quit
choice /c:HPKM /n > nul
if errorlevel 3 msbackup
if errorlevel 2 if not errorlevel 3 goto D3
if errorlevel 1 if not errorlevel 2 goto D1
goto A3
:D3
echo ![H![0m Accessories  ![0m Maintainence ![0m Other
echo ![2;29H![0m Msav
echo ![3;29H![0m Msbackup
echo ![4;29H![7m Quit
choice /c:HPKM /n > nul
if errorlevel 3 goto END
if errorlevel 1 if not errorlevel 2 goto D2
echo ![0m![2J
goto A3
:END
echo ![0m![2J
::========================================================================

 Regards                        _!_
                Mic         -----o-----
                                " "


-!-
 ! Origin: Melbourne PC User Group  +61-3-9699-6788 (3:632/309)


 Area: Batch Language Programming                     FI 
  Msg#: 448             Local                        Date: 30 Aug 97  00:04:38
  From: Bat Lang                                     Read: Yes    Replied: No
    To: Gary Cooper                                  Mark:
  Subj: Another option

 -=> Quoting Gary Cooper to Bat Lang, [27 Aug 97  15:24:53] <=-

                [... text deleted for brevity ...]

 GC> I don't see any Internet address for Jay, so I hope Mike will be able
 GC> to contact him...

+-------------------------------------------------+
:       Zone : 1                                  :
:        Net : 382                                :
:       Node : 506                                :
:       Name : The Crossroads                     :
:   Location : Round Rock Tx                      :
:      Sysop : Jay Loveless                       :
:  Telephone : 1-512-310-7705                     :
:       Baud : 9600                               :
:      Flags : CM,MO,XA,V32b,V32T,VFC,V34,V42b    :
:                                                 :
:  c:\pp\down\nl\nodelist.241                     :
+-------------------------------------------------+

I'll get his email address for you.  Good Modeming!  /\oo/\

... NetMail: 1:382/1201 or E-mail: bat@ccsi.com

-!- Blue Wave/Max v2.30
 ! Origin: The HUB * Austin TX * Centex PCUG * 512-346-1852 (1:382/1201)

 Area: Batch Language Programming                     FI 
  Msg#: 446                                          Date: 26 Aug 97  06:17:14
  From: Michael Blackett                             Read: Yes    Replied: No
    To: All                                          Mark:
  Subj: Archives

Greetings all,

do you find that after a major download session, you have loads of
different types of archives to unzip, look at, and delete, well now, i have
the batch file for you...

When executed, it will compile a list of the valid archives (arj, lha, lzh,
rar and zip) in the current directory, and unarchive them into their own
directory, under the subdirectory of FILES.

example...

you have POWERRAN.ZIP  486TO586.ARJ  WELCOME.ARJ

in the directory of x:\comms\download
it will then create...

x:\comms\download\files
then
x:\comms\download\files\powerran.zip
x:\comms\download\files\486to586.arj
x:\comms\download\files\welcome.arj

and unarchive all the relevent files into the relavent directories.!

I call it PK.BAT (short for the PK range of archivers)



NOTE :  there are 5 files that are split over two lines, these are marked
with a %
------------------CUT HERE--------------------------
@ECHO OFF

IF NOT EXIST *.ARJ GOTO NOFILES
IF NOT EXIST *.LHA GOTO NOFILES
IF NOT EXIST *.LZH GOTO NOFILES
IF NOT EXIST *.RAR GOTO NOFILES
IF NOT EXIST *.ZIP GOTO NOFILES

ECHO      Compiling Batch Script ...

DIR *.ARJ /A-D /ON /-P /B     >  ~.DAT
DIR *.LHA /A-D /ON /-P /B     >> ~.DAT
DIR *.LZH /A-D /ON /-P /B     >> ~.DAT
DIR *.LZX /A-D /ON /-P /B     >> ~.DAT
DIR *.RAR /A-D /ON /-P /B     >> ~.DAT
DIR *.ZIP /A-D /ON /-P /B     >> ~.DAT

MD .\FILES
FOR %%F IN (*.ARJ *.LHA *.LZH *.RAR *.ZIP) DO MD .\FILES\%%F  > NUL

ECHO OPEN "~.DAT" FOR INPUT  AS #1  >  ~.BAS
ECHO OPEN "~.BAT" FOR OUTPUT AS #2  >> ~.BAS
ECHO PRINT #2, "@ECHO OFF"          >> ~.BAS
ECHO DO WHILE NOT EOF(1)            >> ~.BAS
ECHO LINE INPUT #1, OLD$            >> ~.BAS

ECHO IF RIGHT$(OLD$,3) = "ARJ" THEN TMP$ = "ARJ X -I -Y      " + OLD$ + " %
.\FILES\" + OLD$ + "\ > NUL"  >> ~.BAS
ECHO IF RIGHT$(OLD$,3) = "LHA" THEN TMP$ = "LHA X /A /I /M /X" + OLD$ + " %
.\FILES\" + OLD$ + "\ > NUL"  >> ~.BAS
ECHO IF RIGHT$(OLD$,3) = "LZH" THEN TMP$ = "LHA X /A /I /M /X" + OLD$ + " %
.\FILES\" + OLD$ + "\ > NUL"  >> ~.BAS
ECHO IF RIGHT$(OLD$,3) = "RAR" THEN TMP$ = "RAR X Y O+       " + OLD$ + " %
.\FILES\" + OLD$ + "\ > NUL"  >> ~.BAS
ECHO IF RIGHT$(OLD$,3) = "ZIP" THEN TMP$ = "PKUNZIP -D -O    " + OLD$ + " %
.\FILES\" + OLD$ + "\ > NUL"  >> ~.BAS

ECHO PRINT #2, "ECHO      Unzipping " + OLD$ + " ..."  >> ~.BAS
ECHO PRINT #2, "     " + TMP$                          >> ~.BAS
ECHO PRINT #2, "ECHO      " + OLD$ + " Done."          >> ~.BAS
ECHO LOOP                                              >> ~.BAS
ECHO CLOSE:SYSTEM                                      >> ~.BAS

ECHO      Batch Script Finished.
ECHO      Unzipping Files ... Please Wait ...
ECHO.

QBASIC /RUN ~.BAS

FOR %%X IN (CALL DEL) DO %%X ~.BAT
FOR %%X IN (DAT BAS) DO DEL ~.%%X

CD .\FILES
ECHO      Done.
GOTO END

:NOFILES
ECHO.
ECHO     There are no archives to process

:END
ECHO.
------------------CUT HERE--------------------------


have fun



Wiz





Wizard
aka
Michael Blackett
 * Wave Rider 1.10 [NR] *
... UNREGISTERED EVALUATION COPY
-!-
 ! Origin: Walrus Node @ (2:2502/66)

 Area: Batch Language Programming                     FI 
  Msg#: 446                                          Date: 04 Sep 97  08:29:55
  From: Andy Roberts                                 Read: Yes    Replied: No
    To: Gary Cooper                                  Mark:
  Subj: BATPOWER ACCESS

 Gary Cooper,

18-Aug-97 12:04:30, Gary Cooper wrote to Bob Morton
          Subject: BATPOWER ACCESS

  -=> Quoting Bob Morton to Gary Cooper <=-

 BM>> Gary, here's an idea below for getting BATPOWER into your
 BM>> computer:

 BM>> Without a local BBS, it's going to cost him money one way or the
 BM>> other.

Maybe, maybe not.  I don't charge any of the Points under my node
address.  And I know some of them are taking the BATPOWER echo and
many others.  I have the full backbone available, but only carry
what my users are interested in, which amounts to about 60 echoes.

 BM>> He could become a bbs and get his echos via the internet, but
 BM>> then he's looking at an ISP account and possibly a charge to pick
 BM>> up from the fido ftp site.  Here, too, though, he's probably need
 BM>> to be nodelisted to join and FTP Fido site to pick even the one
 BM>> echo.

That's the maybe so part.  At least paying for an Internet PPP.

 GC> This would be a viable option, if it was just BatPower I was
 GC> interested in grabbing.

I can provide any echoes an end user or Point is interested in.
They can either Poll me direct or use Internet with Fido2Int or an
OS/2 REXX script that does the same thing as Fido2Int or TransX.

 GC> I'd like to be able to find an economical means of accessing
 GC> the entire backbone via the internet.

I do not have any interest in carrying the entire backbone.  Most
users can not read that much and the rest is excess D/L time.  But
my HUB LeRoy DeVries 1:343/108 ldv@aa.net does carry the full
backbone and may be interested in working with you.  The catch with
LeRoy DeVries MAY be that we use AdeptXBBS and transfer Fidonet
front-end to front-end, similar to Telnet.  I don't know IF LeRoy
DeVries is interested in messing with any other software/method.

 GC> Fido is about to die locally, and I'd like to find a way to
 GC> breathe some life into it.

There are several of us who are picking up the slack as local BBSs
fold up.  I have about 60 Points.  Some of those are not exactly
local to me here in VA.  Some are in New Zealand, Holland, France,
S. Korea, Canada, Alaska and all over the US.  Many of my remote
Points get and send their Fidonet mail bundles via Internet.  I'm
setup for both Fido2Int and TransX which attaches Files to Internet
E-Mail.

I also carry several of the IFDC File Echoes and have BFDS available
here and provide any files someone wants via E-Mail File Attach.

 GC> A local Fido user's group has been importing our fido feed via
 GC> George Peace and paonline.com, however, our numbers have dwindled
 GC> and we cannot generate enough interest to come up with the cash to
 GC> continue. We have an ISP but cannot afford to pay the PAOnline
 GC> subscription fee (@$30us/mo).  :-(

Yeah, I know how that is.  George is good and he was 1 of the 1st,
but he is expensive.

 GC> If there is a more economical means of getting the echos via an
 GC> internet ftp site, I'd like some contact information.

See Fidonews FNEWSE26.ZIP
-!- Excerpt ---

     Currently, there are five major FidoSpine hubs that offer both
     landline as well as FTP and/or TransX feeds:

     Bob Seaborn, 1:140/1  bseaborn@quadrant.net
     Peter Rocca, 1:2401/305  rocca@multiboard.com
     Ed Georgen, 1:2222/1  ed.georgen@station-1.com
     Jerry Gause, 1:3651/9  gpgause@pdn.net
     Jim Balcom, 1:109/334  balcomj@daddy.com

     These five hubs can supply any net or node with the level of service
     they desire. For a list of echos carried by FidoSpine FREQ FIDONET.NOW
     from any of the above. Additional hubs are planned for each region.

     Please link into SP_GENERAL for more information about FidoSpine. Free
     feed for this echo is available from the above hubs or from the
     undersigned:

     Bob Kohl, RC10/REC10  1:10/0
     Martin Belcke, RC11 1:11/0
     Ed Georgen, REC11 1:2222/1
     David Moufarrege, RC13 1:13/0
     Jim Balcom, REC13  1:13/1
     Dallas Hinton, RC17  1:17/0
     John Mudge, REC17 1:17/1
     Dave Anderson, REC18  1:18/218

-!- End Quote ---

 GC> Thanks for the offer to point off Flamingo.  I'll have to consider
 GC> the different possibilities once I find out what my options are.

There actually are a lot of options.  The problem I ran into several
times was reliability.  My local net109 was very UN-reliable under
Jim (Sid) Balcom.  And since he is now 1 of the FidoSpine I can't
say much if things have improved regarding Jim Balcom.  Maybe some
of the other FidoSpine HUBs are more reliable.  But it is nice to
have my local net109 to fall back on in hard times.  I've been
paying remote HUBs to let me get Fidonet via Internet for over a
year.  LeRoy DeVries is very reliable, but I had another HUB who
just pulled the plug without even saying good-bye.  I don't know
what LeRoy charges for the full backbone.  Probably more than those
like me who only want to pick and AreaFix.  He may or may not charge
others the same as he did me.  I paid $60/year.

I know this is getting Off-Topic, but it is in the interest of
distributing the BATPOWER echo.  I used to read this echo
regularly, but I use OS/2 and REXX now.  So send any replies to me
via NetMail or E-Mail.  And I'll consider my part of this thread
done now.

BTW, for Points who loose their Boss and need to get a nodelisted
address, Terminate/TerMail 500TER.ZIP may be the solution.

            United States Terminate Registration Site
            TSR - TERMINATE SUPPORT REGISTRATIONS
            Andy Roberts, 1:109/921
            695 PINEY MTN RD, LURAY, VA 22835, USA
            Voice: 1-540-743-9432
            Fax  : 1-540-743-1732 - ZOOM
            BBS  : 1-540-743-2865 - USR V.Everything+ X2
            Internet E-Mail : andy@shentel.net

      Online credit card menus to Register TERMINATE & DoorWay

     Thanks and Good Luck,        Andy Roberts
                                  NetMail 1:109/921.1
                                  AdeptNet 55:730/101
                                  andy@shentel.net
-!- Terminate 5.00/Pro*at
 ! Origin: Registrations for Terminate accepted at TSR BBS (1:109/921.1)

 Area: Batch Language Programming                     FI 
  Msg#: 449             Rec'd                        Date: 09 Sep 97  02:51:11
  From: Douglas Myers                                Read: Yes    Replied: No
    To: Bat Lang                                     Mark:
  Subj: BATFAQ73 comment

*** Quoting Bat Lang from a message to John Gray ***

BL> I agree with your assessment that this is certainly a cleaner example
BL> than the one that was there.  So now, I am asking for a volunteer to
BL> replace Rudy Lacchin's explanation with a similar walk thru of the
BL> example.  Do I have a volunteer??

Well, I've offered two versions here, a long and a short.  I'd
suggest something like the short version for BAT-FAQ and hold onto
the longer version when we publish BAT-BABBLE :)

Terse version:
--------------
FOR %%A IN (0 1)                 DO IF ERRORLEVEL   %%A00 SET N=%%A
FOR %%A IN (0 1 2 3 4 5 6 7 8 9) DO IF ERRORLEVEL %N%%%A0 SET N=%N%%%A
FOR %%A IN (0 1 2 3 4)           DO IF ERRORLEVEL   2%%A0 SET N=2%%A
FOR %%A IN (0 1 2 3 4 5 6 7 8 9) DO IF ERRORLEVEL  %N%%%A SET N=%N%%%A
FOR %%A IN (0 1 2 3 4 5)         DO IF ERRORLEVEL   25%%A SET N=25%%A
ECHO ERRORLEVEL is %N%

FOR %%A IN (0 1)                 DO IF ERRORLEVEL   %%A00 SET N=%%A
  :: if errorlevel is 0 or 100, set N to 0 or 1
FOR %%A IN (0 1 2 3 4 5 6 7 8 9) DO IF ERRORLEVEL %N%%%A0 SET N=%N%%%A
  :: sets N to two digits if errorlevel is 00?, 01?, ... up to 19?
FOR %%A IN (0 1 2 3 4)           DO IF ERRORLEVEL   2%%A0 SET N=2%%A
  :: sets N to two digits if errorlevel is 20?, 21?... to 24?
FOR %%A IN (0 1 2 3 4 5 6 7 8 9) DO IF ERRORLEVEL  %N%%%A SET N=%N%%%A
  :: sets N to three places if errorlevel is 000 to 249
FOR %%A IN (0 1 2 3 4 5)         DO IF ERRORLEVEL   25%%A SET N=25%%A
  :: sets N to three places for errorlevel 250 to 255
ECHO ERRORLEVEL is %N%
  :: displays errorlevel
--------------

Somewhat longer-winded version:
--------------
@ECHO OFF
FOR %%A IN (0 1)                 DO IF ERRORLEVEL   %%A00 SET N=%%A
FOR %%A IN (0 1 2 3 4 5 6 7 8 9) DO IF ERRORLEVEL %N%%%A0 SET N=%N%%%A
FOR %%A IN (0 1 2 3 4)           DO IF ERRORLEVEL   2%%A0 SET N=2%%A
FOR %%A IN (0 1 2 3 4 5 6 7 8 9) DO IF ERRORLEVEL  %N%%%A SET N=%N%%%A
FOR %%A IN (0 1 2 3 4 5)         DO IF ERRORLEVEL   25%%A SET N=25%%A
ECHO ERRORLEVEL is %N%
SET N=

@ECHO OFF
  :: Keeps the screen clean during execution of the batch file
FOR %%A IN (0 1)                 DO IF ERRORLEVEL   %%A00 SET N=%%A
  :: This FOR loop executes twice, once for each element in the
  :: parenthesis.  %%A is replaced by 0 in the first execution, so the
  :: statement N=0 is stored in the environment no matter what the
  :: errorlevel is (IF ERRORLEVEL 000 means 0 or higher).  In the
  :: second execution, N will be set to 1 if the errorlevel is greater
  :: than 100.  Whichever value of N is stored, 0 or 1, it will be
  :: substituted below by the expression %N%.
FOR %%A IN (0 1 2 3 4 5 6 7 8 9) DO IF ERRORLEVEL %N%%%A0 SET N=%N%%%A
  :: This loop executes ten times.  If N=0 then N will end up being 01,
  :: 02, ... 09 if the actual errorlevel is 10-19, 20-29, ... 90-99.
  :: Similiarly, if the errorlevel is 100 or higher then N will end up
  :: being 10, 11, 12, ... up to 19.
FOR %%A IN (0 1 2 3 4)           DO IF ERRORLEVEL   2%%A0 SET N=2%%A
  :: This loop corrects the previous one where N=19 even for
  :: errorlevels from 200 to 255.  N will be set to 20-24 in this step
  :: if the errorlevel is greater than 200.
FOR %%A IN (0 1 2 3 4 5 6 7 8 9) DO IF ERRORLEVEL  %N%%%A SET N=%N%%%A
  :: This loop will set the third digit of N, and will usually set N to
  :: the actual errorlevel.  However, if the errorlevel is 250 to 255,
  :: this loop will end up setting N=259 (errorlevel 259 is out of
  :: range, so the final test in this loop would be testing for
  :: errorlevel 259 less 256, or errorlevel 3, which would always be
  :: true.  This glitch is resolved below:
FOR %%A IN (0 1 2 3 4 5)         DO IF ERRORLEVEL   25%%A SET N=25%%A
  :: This loop executes 5 times, but it doesn't alter N unless the
  :: errorlevel is 250 or greater.  Then the N=259 from the previous
  :: step is corrected.
ECHO ERRORLEVEL is %N%
  :: We should have a good errorlevel after all that, so it's time to
  :: display it to the screen.
SET N=
  :: This statement removes N=??? from the environment.  You can skip
  :: this step if you want to use the stored errorlevel later in your
  :: batch file, recalling it with %N%.
--------------

-!- Telegard v3.02/mL
 ! Origin: Howdy's Whistle Stop  Summerdale PA  717 732 6820 (1:270/720)

 Area: Batch Language Programming                     FI 
  Msg#: 449                                          Date: 14 Sep 97  13:06:36
  From: Carlo Mosti                                  Read: Yes    Replied: No
    To: Dimitri Baikrich                             Mark:
  Subj: Need help

>>> Reply to message writen by Dimitri Baikrich on 12 Sep 97  13:16:38 <<<

 DB> Cher All, veuillez prendre note cette importante missive :

        Salut Dimitri!

 DB> How to make a BATCH to take the FILE_ID.DIZ file of the
 DB> compressed file and to put it in a file named "FILES.BBS" (
 DB> I've tried... ) I can do it with 1 file, but not with 200 files
 DB> (this program must append the FILE_ID.DIZ at the end of the old
 DB> FILES.BBS) Er... Understood ?

        first batchfile

*** ALLZIP.BAT **************************
@echo off
for %%f in (*.zip) do call appdiz.bat %%f
*****************************************

        second batchfile

*** APPDIZ.BAT **************************
@echo off
pkunzip %1 file_id.diz
type file_id.diz >> files.bbs
del file_id.diz
*****************************************
*****************************************

-!- PoPa Sbe / 2 Nodes!
 ! Origin: -=[ POPA SBE // Ste-Therese // 430-0251 * 430-1524 ]=- (1:242/902)

 Area: Batch Language Programming                     FI 
  Msg#: 448                                          Date: 14 Sep 97  13:47:00
  From: Jeff Brielmaier                              Read: Yes    Replied: No
    To: Dimitri Baikrich                             Mark:
  Subj: Need help

DB>I need help: How to make a BATCH to take the FILE_ID.DIZ file of the
DB>compressed file and to put it in a file named "FILES.BBS" ( I've
DB>tried... ) I can do it with 1 file, but not with 200 files (this
DB>program must append the FILE_ID.DIZ at the end of the old FILES.BBS)

How about something like this...
___-------------------------------------------
@echo off
if "%1"==""  goto Start
echo Processing: %1
if exist file_id.diz   del  file_id.diz
pkunzip %1 file_id.diz >nul
echo.>>files.bbs
echo -[%1]->>files.bbs
if not exist file_id.diz  echo No file info available>>files.bbs
if     exist file_id.diz  copy /y files.bbs+file_id.diz >nul
goto Exit

:Start
rem>files.bbs
for %%f in (*.zip)  do call %0 %%f
echo.
echo Processing is completed.
echo.

:Exit
___-------------------------------------------

 * KingQWK 1.05 # [PK] * SKILL: A long, long, long, long streak of blind luck.

-!- Maximus/2 3.01
 ! Origin: COMM Port OS/2 juge.com 204.89.247.1 (281) 980-9671 (1:106/2000)

 Area: Batch Language Programming                     FI 
  Msg#: 450             Local                        Date: 04 Oct 97  03:31:41
  From: Bat Lang                                     Read: Yes    Replied: No
    To: Andy Guess                                   Mark:
  Subj: Hello Again...

 -=> Quoting Andy Guess to All, [03 Oct 97  17:38:20] <=-

 AG> Hello again!

Well, look what the cat dragged in!  {^; Howdy!  Welcome back.  We
could use some fresh blood in here.  {^;  Good Modeming!  /\oo/\

... NetMail: 1:382/1201 or E-mail: bat.lang@1201.ima.infomail.com

-!- Blue Wave/Max v2.30
 ! Origin: The HUB * Austin TX * Centex PCUG * 512-346-1852 (1:382/1201)

 Area: Batch Language Programming                     FI 
  Msg#: 450                                          Date: 15 Oct 97   8:27:00
  From: Horst Schaeffer                              Read: Yes    Replied: No
    To: all                                          Mark:
  Subj: HORST30 utilities

Now available: the new utility archive HORST30.ZIP.

It has become a little larger than the last version (see list of
programs below). Some programs have already been posted recently,
but there are also some brand new ones. Have look and find out
if there's something you can use...

request: HORST30.ZIP or magic HORST, 64Kb
         at 1:270/720  -  33.6KBPS, 24 hrs

This archive includes only a few small demo files, but Doug Myers has
prepared some more examples and demos, which he will release as separate
archives.

program version >> marks new programs/enhancements vs. HORST_2
-+-+-+- ------- --------------------------------------------------------
ANSICHK  1.0    >> returns errorlevel 0 if ANSI driver detected
ANSIEX   1.0    >> remove ANSI sequences, emulating cursor handling
ASCREEN  1.0    >> display screen from file, ANSI emulation
BANNER   1.0    >> big font looping message
BIGFONT  1.0    >> display big characters (4 lines high), round pixels
CHOIX    1.1    >> CHOICE clone with mouse support
COUNT    1.0    >> Count, add, subtract (variable), fixed length option
CRC32    2.1    report and check CRC32
                >> optional list processing, verify listed CRC
CRLF     1.1    >> CR to CR+LF v.v. / option: remove empty lines
CSCRIPT  2.21   DEBUG/UU/XXencoded script generator with CRC32
                >> max source file size now 45Kb (bugfix)
CSOUND   2.1    >> sound output for PC speaker / resident beep replacement
DELAGE   1.2    delete/report files by age (days)
DREADY   2.2    disk(ette) ready?
                >> optional check "ready to write"?
ESPACE   1.2    environment variable space report/check with errorlevel
                >> special handling for MS-DOS 7
EVERY    1.0    run jobs once a day / once a week
INPUT    1.0    >> string input, editing of existing variable..
ISDATE   1.2    compare date (also date of file, today)
KPUSH    2.0    stuff keystrokes into keyboard buffer, code test mode
                >> more flexible key syntax
LINEX    1.2    >> extract [multiple] range of lines from ASCII file
LISTMOD  2.3    make list of commands from input list
                >> variable size of numbers / cut out section of line
LOGECHO  2.0    custom entries for logfiles, with enhanced date handling
                >> added: day of year, 1-digit month (hex)
LOGTRIM  1.4    trim logfiles (min/max KB)
NSET     2.1    pipe data from STDIN into an environmental variable
                >> random line / cut out section of line
PACO     1.1    executable COM file archive (prefix) for small COM files
                >> bugfix: quick contents
PCHECK   1.1    checks if (parallel) printer is ready, optional reset
QECHO    1.0    "quote echo" with control codes, defaults without CR/LF
RANDOM   1.0    >> random number (given range) to STDOUT
WAIT     1.4    wait seconds with prompt, key by errorlevel
                >> minutes, decimal seconds / WAIT 0 to test key input
WAIT4    1.4    >> wait for/until with large "digital clock", options
WHAT     1.0    errorlevel for: hour/minute/year/month/day/day of week
-+-+-+-

Horst
... horst@confusion.rmc.de

-!- FM 2.02
 ! Origin: Don't follow leaders! (2:2480/13.75)

 Area: Batch Language Programming                     FI 
  Msg#: 448                                          Date: 14 Oct 97  19:07:14
  From: Douglas Myers                                Read: Yes    Replied: No
    To: Dave Vandermeer                              Mark:
  Subj: Need help.

 DV> Programming something like this is not doable through a batch file..
 DV> now if  you code in c/c++/asm/pascal, etc.. you can write a routine
 DV> that would start  the drive motor and read head to see if there is a
 DV> disk in the drive.. but  what you are trying to do is not possible
 DV> through batch files...

        Here's one which Vernon Frazee wrote which seems to work out
        okay.  Probably no one was around to let him know it
        couldn't be done :)

         @echo off
         rem>!@#.#@!
         %comspec% nul /f /c if exist a:\nul del !@#.#@!
         if not exist !@#.#@! echo Drive a: is ready
         if exist !@#.#@! echo Drive a: is not ready
         if exist !@#.#@! del !@#.#@!
        :End ------------------------------------- -vjf-


... Douglas.Myers%270-720@mdtnbbs.com
-!- Blue Wave/DOS v2.20
 ! Origin: Howdy's Whistle Stop  Summerdale PA  717 732 6820 (1:270/720)
