Beruflich Dokumente
Kultur Dokumente
Start Mit Batch Programmierung PDF
Start Mit Batch Programmierung PDF
KnowWare
e e ! Stapelverarbeitungsdateien
Fr
Start mit
BATCH
Programmierung
Ideen & Beispielsammlung
fr DOS - relevant unter Windows 9x
?
@echo off
!
if %2.==.goto err
copy %1 %2 > nul
del %1
goto off
:err
echo Zielangabe fehlt!
:off
Lars Aschenbach
www.KnowWare.de 2. Ausgabe
2 KnowWare
www.knowware.de
Vorwort
Lars Aschenbach
PATH, PROMPT, RMDIR, REM, REN, SET, Eine gemeinsame Schreibweise, die auf
TIME, TYPE, VER und VERIFY beiden Gerten gltig und unproblematisch
ist, gibt es immerhin fr die ersten drei
Was diese Befehle bedeuten und bewirken, Batchzeilen:
erklre ich in einem spteren Teil des Kursus,
da ich vorher noch auf das Thema Dateien IF %1.==L. ECHO Der Buchstabe L!
IF EXIST ..\NUL.* CD ..
und Dateienverwaltung eingehen mu und IF NOT EXIST C:\DOS\NUL.* MD C:\DOS
damit setzen wir in der nchsten Ausgabe
fort. Doch bei den restlichen vier Zeilen fand ich
keinen gemeinsamen Nenner und mute
Know How: Batching daher prfen, vor dem Einsatz dieser Zeilen,
ob die Syntax vom PoFo oder vom PC
Laufe ich auf dem PoFo oder dem anzuwenden ist.
PC? Angeregt durch DR-DOS und NovellDOS
Diese Frage mssen sich Batchdateien stellen half ich mir deshalb mit den Variablen OS
und selbst beantworten knnen, wenn sie auf (Operating System) und VER (Version)
beiden Computern laufen sollen. Denn es gibt weiter, die ich dann auf dem jeweiligen
leider ein paar Unterschiede in der Computer von Hand setzte. So nahm ich Teile
Batchsyntax zwischen PoFo und PC! der Bildschirmmeldung auf, die sich aus der
So kann jede einzelne, der folgenden Anwendung des Befehles VER ergeben, um
Batchzeilen, dem PC unter bestimmten zwischen PC und PoFo unterscheiden zu
Umstnden Probleme bereiten: knnen.
besitzen, die mit DR-DOS, bzw. NWDOS Batchdatei sich selbst neustarten lasse und
definiert ist. Es reicht ja aus zu prfen, ob die den Parameter %1 berprfe!
Variable OS mit DIP-OS definiert wurde, Und tatschlich kann ich das mit der
damit die PoFo-Syntax angewendet wird! Batchdatei DIPOS.BAT beweisen:
Somit kann ich also tatschlich
01: @echo off
Batchdateien schreiben, die sowohl auf dem 02: rem Ist die Batchdatei unter DIP-OS gestartet worden
PC, als auch auf dem PoFo lauffhig sind! oder nicht?
Doch leider ist damit das Problem noch nicht 03: rem
ganz gelst: 04: rem Selbstaufruf, wegen Trennprfung beim DIP-OS:
Keine Batchdatei kann sich mit absoluter 05: rem
06: if not %0==dIpOs.BaT if not %1.==.BaT. dIpOs.BaT
Sicherheit darauf verlassen, das die Variable
07: rem
OS vom Bediener angelegt wurde. Fehlt diese 08: rem Ergibt folgende Parameter:
Variable, oder ist sie nicht mit DIP-OS 09: rem
definiert, so wird immer die vom PC gltige 10: rem bei DIP-OS: %0 = dIpOs %1 = .BaT
Syntax verwendet und das ohne Rcksicht 11: rem bei MS-DOS: %0 = dIpOs.BaT %1 =
auf Verluste und Fehlermeldungen! 12: rem
13: if %1.==.BaT. echo Ich laufe unter DIP-OS!
Wie eingangs erwhnt, mu sich jede
14: if %1.==.BaT. set OS=DIP-OS
Batchdatei fragen, ob das zugrundeliegende 15: if %1.==. echo Ich laufe NICHT unter DIP-OS!!!
Gert ein PoFo oder ein PC ist. Diese Frage 16: if %1%os%.==. set OS=MS-DOS
mu die Batchdatei dann auch noch selbst
beantworten knnen, damit es keine Die Zeilennummern nebst Doppelpunkt sind
Probleme gibt! nicht abzutippen! Die wechselnde
Deshalb habe ich verschiedene Techniken Schreibweise ist zwar lstig, aber absolut
ausprobiert und bin auch zu sehr notwendig!!!!
umstndlichen, aber funktionierenden DIPOS.BAT sollte durch die Eingabe von
Lsungen gekommen. Weil die nun wirklich "DIPOS" oder "dipos" gestartet werden!
nicht akzeptabel waren, habe ich dann fr ein Weil bei diesem Start noch die Extension
halbes Jahr von diesem Thema Abstand .BaT fehlt, was ja vollauf beabsichtigt ist,
genommen. fallen die Prfungen in Zeile 06: negativ aus
Vor einigen Tagen dann, ich beschftigte und sorgen fr den Neustart inklusive der
mich gerade intensiv mit dem Verhalten der Extension: dIpOs.BaT
Parameter %0 und %1 auf dem PoFo, ffnete Dieser Neustart fhrt zu unterschiedlichen
mir Kollege Zufall die Augen: Reaktionen bei PC und PoFo, weshalb wir
Starte ich eine Batchdatei, z.B. TEST.BAT, diese einmal getrennt betrachten:
auf dem PoFo, indem ich ihren Namen TEST Beim PC wird ja der Parameter %0, hier:
inkl. der Extension .BAT eingebe, so wird der dIpOs.BaT, unbehelligt gelassen, weshalb die
Name im Parameter %0 und die Extension im erste IF NOT-Abfrage in Zeile 06: greift und
Parameter %1 gespeichert: somit kein weiterer Neustart mehr notwendig
ist.
PoFo: %0 = TEST %1 = .BAT Weil kein Parameter %1 existiert der .BaT
Starte ich auf dieselbe Weise beim PC, so lauten knnte, kommt die Zeile 15: zur vollen
werden der Name TEST und die Extension Geltung und gibt kund, das DIPOS.BAT nicht
.BAT zusammen im Parameter %0 unter DIP-OS (PoFo) gestartet wurde!
gespeichert. Ein Parameter %1 existiert dann Die Zeile 16: hlt dann dieses Ergebnis
nicht: nach Mglichkeit in der Variable OS (fr
Operating System) fest, sofern bislang keine
PC : %0 = TEST.BAT %1 = Variable OS existiert. Damit knnen
Wer genau hinschaut, wird also deutliche nachfolgende Batchdateien das OS prfen,
Unterschiede zwischen den Parametern beim ohne erst einen Neustart veranlassen zu
PoFo und beim PC feststellen! mssen. Existierte aber bereits eine Variable
Demnach mu es immerhin mglich sein zu OS, bei DR-DOS und NovellDOS sollte das ja
prfen, ob die Batchdatei unter DIP-OS der Fall sein, so bleibt die bisherige Definition
gestartet wurde oder nicht, wenn ich die von OS erhalten.
Beim Neustart auf dem PoFo findet dagegen Verzeichnis C:\BATCH mit in die PATH-
die Aufteilung von dIpOs.BaT in dIpOs und Anweisung aufgenommen:
.BaT statt. Somit lautet der Parameter %0 PATH=C:\DOS;C:\BATCH
dIpOs und der Parameter %1 .BaT. Diese Das ganze hat folgende Vorteile:
Aufteilung und Umwandlung findet brigens Will ich meine Batchdateien verffentlichen,
noch vor der Ausfhrung der Zeile 01: statt! in ein anderes Laufwerk und Verzeichnis
Nun greift die zweite IF NOT-Abfrage der verlagern oder auf einen anderen PC
Zeile 06: und verhindert einen weiteren bertragen, so mu weder ich noch ein
Neustart. Da jetzt der Parameter %1 existiert anderer User, die Laufwerks- und
und zudem noch .BaT lautet, sind die Verzeichnisangaben in den ganzen
Bedingungen der Zeile 13: erfllt und es wird Batchdateien ndern, damit sie unter den
gemeldet, das DIPOS.BAT unter DIP-OS neuen Bedingungen auch funktionieren. Es
(PoFo) gestartet wurde. mu lediglich dafr Sorge getragen werden,
Hier hlt dann die Zeile 14: das Ergebnis fr da die Variablen BDV, BDY und PATH
nachfolgende Batchdateien in der Variablen angepat oder bereitgestellt werden:
OS fest. Voila! Dadurch haben alle User deutlich weniger
Nun kann man entweder DIPOS.BAT vor Tipparbeit und sind sehr flexibel!
den eigentlichen Batchdateien starten, damit Wer dieses Grundgerst in Zukunft fr
die Variable OS auch existiert, oder man setzt seine Batchdateien verwendet, kann nun auf
seine Routine in das zweierlei Wegen abprfen, ob die Batchdatei
folgende Grundgerst ein: auf dem PoFo luft oder nicht:
Entweder man prft die Variable OS also
01: @echo off
02: for %%a in (%bdv%. %bdy%.) do if %%a==. goto err auch weiterhin auf den Inhalt DIP-OS ab,
03: if not %0==%BDV%%BDY%bAtCh.BaT if not oder man prft den Parameter %0, der dann
%1.==.BaT. %BDV%%BDY%bAtCh.BaT %1 %2 %3 beim PoFo .BaT heien mu, wenn die
%4 %5 %6 %7 %8 %9 eigentliche Routine zum Zuge kommt. Weil
04: if %1.==.BaT. set OS=DIP-OS die Variable OS nicht in allen Fllen existiert,
05: if %1%os%.==. set OS=MS-DOS
oder angelegt werden kann, ist die Prfung
06: if %1.==.BaT. shift
07: rem des Parameters %0 auf .BaT besonders zu
08: rem Hier mu dann die eigentliche Routine empfehlen!!!
eingebunden werden! Warum die Variable OS berhaupt von der
09: rem Firma Digital Research eingefhrt wurde und
97: :err ich mir diese zu Nutze mache:
98: for %%a in (%bdv%. %bdy%.) do if %%a==. echo
So manches Programm will nur partout
Eine der Variablen BDV und BDY existiert nicht!
99: :off unter MS-DOS oder PC-DOS funktionieren
und fragt daher die Betriebssystemversion
In der Zeile 03: mu dann anstelle von ab. Lautet diese z.B. nicht "MS-DOS 4.0", so
bAtCh.BaT und bAtCh.BaT der endgltige stellt das Programm seine Arbeit unverzglich
Name der Batchdatei eingetragen werden. ein. Den Entwicklern von DR-DOS, welches
Bitte achtet dabei auf die wechselnde spter zu NovellDOS wurde, war dies
Schreibweise, da sie sehr, sehr wichtig ist!!! natrlich ein Dorn im Auge, weshalb sie den
Neu sind dabei die Variablen BDV und BDY: Kufern eine einfache
Hinter diesen Variablen, die in vielen meiner Manipulationsmglichkeit dieser
Batchdateien vorkommen, verbergen sich das Betriebssystemversion boten:
BatchDriVe (das Laufwerk AUF DEM sich Mittels SET-Befehl kann man dort die
meine Batchdateien befinden) und das Variablen OS und VER (fr Version) auf die
BatchDirectorY (das Verzeichnis IN DEM gewnschten Werte einstellen, damit das
meine Batchdateien stehen). gewnschte Programm berlistet wird und
So habe ich BDV durch die AUTOEXEC.BAT luft.
mit SET BDV=C: und BDY mit SET Weil das Rad nicht zweimal erfunden
BDY=\BATCH\ definiert. Damit das DOS werden mu, englischsprachige Variablen bei
meine Batchdateien auch jederzeit der internationalen Verbreitung meines
wiederfindet, habe ich dann noch das Wissens hilfreich sind und ich eine straffe
Organisation bevorzuge, verwende also auch Laufwerk nicht, so wird die Meldung
ich die Variable OS! Ungltiges Laufwerk in 1.BAT
Die Variable VER spielt zwar derzeit noch geschrieben. Beim folgenden Aufruf von
keine Rolle, aber ich werde sie dann nutzen, 1.BAT krzt DOS das Wort Ungltiges auf
wenn ich auf dem PC die externen UNG zusammen und ruft die vorhandene
Programme des jeweiligen DOS verwenden Batchdatei UNG.BAT auf. Weil die Feh-
mchte. Auch fr den PoFo ist diese Variable lermeldung Nicht bereit... trotz Umleitung
VER noch unbedeutend und mu nicht nicht in 1.BAT abgelegt wird, hnge ich per
zwingend angelegt werden. Aber wer wei??? -ECHO-Befehl das Wort NO an 1.BAT,
damit
1.BAT spter NO.BAT starten kann und
Laufwerk vorhanden, Diskette mir gemeldet wird, da das Laufwerk zwar
existiert, aber keine, oder eine unformatierte
eingelegt? Diskette enthlt.
Diese Frage kann per Batchdatei beantwortet Genug des Geplnkels, hier ist also
werden! Doch zuerst mu einiges Wissen LW&DISK.BAT:
bekannt sein, damit man die Funktionsweise
von LW&DISK.BAT verstehen kann: @echo off
Ist das Laufwerk A: vorhanden und mit einer rem falls mal etwas schiefluft!
if %1.==. if exist c:\temp\a.dat goto off
formatierten Diskette bestckt, so erhlt man
rem Laufwerksangabe vergessen?
mit -DIR A:\- etwa folgende Informationen: if %1.==. goto err
rem Temporres Verzeichnis anlegen
Datentrger in a: hat keine Bezeichnung md c:\temp> nul
Inhaltsverzeichnis von a: rem Pfad retten und ergnzen
config.sys 1.01.80 0:00 set opath=%path%
... set path=%path%;c:\temp
Befindet sich aber keine Diskette im real rem Hilfs- & Antwortdateien erzeugen
existierenden Laufwerk A:, so sollte man echo a> c:\temp\a.dat
echo @echo off> c:\temp\datentr.bat
nach -DIR A:\- folgende Meldung erhalten: echo echo LW %1 und Diskette vorhanden!>>
Nicht bereit, Fehler beim lesen a: c:\temp\datentr.bat
Abbrechen, Wiederholen, Ignorieren? echo lw&disk>> c:\temp\datentr.bat
echo @echo off> c:\temp\no.bat
Diese Meldung mu dann noch entsprechend echo echo Keine o. unformatierte Diskette im LW %1!>>
mit <A>, <W>, oder <I> beantwortet c:\temp\no.bat
werden. Versucht man ein nicht vorhandenes echo lw&disk>> c:\temp\no.bat
Laufwerk anzusprechen, z.B. mit -DIR Q:\-, echo @echo off> c:\temp\ung.bat
echo echo Laufwerk %1 existiert nicht!>> c:\temp\ung.bat
so meldet sich DOS mit:
echo lw&disk>> c:\temp\ung.bat
Ungltiges Laufwerk echo @echo off> c:\temp\1.bat
zu Wort. Je nach DOS-Version knnen diese rem Beginn der eigentlichen Prfung
Meldungen aber deutlich abweichend sein! dir %1\ <c:\temp\a.dat>> c:\temp\1.bat
Damit LW&DISK.BAT auch unter jedem rem Fehler Nicht bereit... wegblenden
DOS tadellos funktioniert, mu man diese cls
rem falls Nicht bereit dann fr Start
Fehlermeldungen knstlich erzeugen und
rem von NO.BAT vorbereiten
LW&DISK.BAT entsprechend abndern. echo no>> c:\temp\1.bat
Denn die Routine erstellt selbstndig die rem 1.BAT starten, 2.Teil d. Prfung
notwendigen Antwortdateien, die sich meist 1
auf das erste Wort der Meldung beziehen. So rem wenn Prfung beendet oder etwas
wird das Directory in 1.BAT geschrieben, rem nicht klappte, dann temporreres
rem Verzeichnis lschen und Ur-Pfad
wenn Laufwerk und formatierte Diskette
rem rekonstruieren
vorhanden sind. :off
Anschlieend wird 1.BAT aufgerufen und for %%a in (c:\temp\*.*) do del c:\temp\%%a
ruft seinerseits DATENTR.BAT auf, da DOS rd c:\temp> nul
das Wort Datentrger als auszufhrende if not %opath%.==. set path=%opath%
Datei definieren kann. Gibt es das gesuchte set opath=
goto aus
rem falsche Syntax!
:err
echo - Aufruf mit z.B. LW&DISK A:! -
echo - DOPPELPUNKT ja nicht vergessen! -
:aus
besser, weil er nicht auf 11 Zeichen nicht testen, schuf ich dann PHASE.BAT,
(achtstelliger Dateiname + dreistelliger welche die Variablen & und O mit jedem
Extension) beschrnkt ist, wie diese Aufruf umschaltet:
Mglichkeit.
Sofern man aber beide Techniken @echo off
if %1.==?. if not %o%.==. goto off
verbindet, so kann das evtl. zu einer sehr
for %%a in (on off) do if not %o%.==%%a. set o=%%a
gebrauchsfhigen Stringverarbeitung for %%a in (pause rem) do if not %&%.==%%a. set
heranwachsen! &=%%a
Ich habe zwar noch keine vernnftige :off
Verwendung fr die hier beschriebene echo Die Testphase ist %o%!
Technik, noch fr die Kombination dieser
TEST.BAT plus CUT.BAT parat, aber vielleicht Zuknftige Batchdateien mssen also mit
hat ja einer von Euch die zndende @ECHO %O% beginnen und die PAUSE-
Idee???!!! Zeilen, die man zu Testzwecken einbringt,
mssen durch %&% gestaltet werden. Dazu
mal eine Testroutine, die Ihr unter dem
Die Entwicklung Namen TEST.BAT abspeichern knnt:
... von Batchdateien ist nicht immer einfach,
ganz besonders dann nicht, wenn sie sehr @echo %o%
echo Dies ist eine unwichtige Zeile!
trickreich ausfallen sollen. Durch das %&%
berhmte Debuggen, die Fehlersuche, geht echo *Zeile ohne Wert*
gewhnlich die meiste Zeit verloren. Dabei
wird von jedem Lehrbuch empfohlen, das Ruft nun abwechselnd PHASE.BAT und
ECHO nicht auszuschalten und an kritischen TEST.BAT auf, um die Wirkung von
Stellen PAUSE-Befehle einzubauen, damit die PHASE.BAT zu ergrnden.
Fehlersuche vereinfacht wird. Wenn also demnchst meine Batchdateien
Whrend der Testphase ist dagegen auch mit @ECHO %O% beginnen sollten, so sollte
nichts einzuwenden, aber was das an Arbeit die Testphase mglichst OFF-geschaltet sein.
bedeutet, wenn man diese Zeilen nach den Den Zustand der Testphase knnt Ihr auch
erfolgreichen Tests lschen kann, das jederzeit durch den Aufruf PHASE? erfragen.
verschweigen die Lehrmeister geflissentlich! Ansonsten werdet Ihr auch nach jedem
Da meine Routinen immer komplexer zu Aufruf ber den aktuellen Stand informiert!
werden scheinen und ich nicht mehr Zeit, als
bisher, in die Fehlersuche investieren will, Der gute Ton
suchte ich eine variable Lsung, damit ich die
Batchdateien nicht nachtrglich berarbeiten ... macht erst die wohlklingende Musik, die
mu. Nach reiflicher berlegung kam ich auf man immer wieder gerne hrt. Auch bei zu
die Idee, anstelle der Befehle Variablen zu programmierenden Batchdateien gibt es ein
verwenden, weil diese ja beliebig umdefiniert paar Grundstze, die man beachten sollte:
werden knnen! Variablen, die nicht von anderen Routinen
So ersann ich die Variable O die entweder mitbenutzt werden, sollten am Ende der
mit dem Wort ON oder OFF definiert sein soll, jeweiligen Batchdatei wieder gelscht
damit ich zu Beginn des Batchprogramms das werden.
ECHO an- oder abschalte: Hilfsdateien sollten ebenfalls nach ihrer
Ttigkeit entfernt werden.
@ECHO %O% Die Hilfsdateien, die man behalten mu,
und die Variable & die mit dem Befehl PAUSE drfen nicht sofort vom Bediener gestartet
oder REM definiert sein soll, damit ich an werden knnen. D.h. ihre Extension sollte
kritischen Stellen bei Bedarf eine PAUSE nicht BAT lauten.
einlegen kann oder nicht: Batchdateien sollten ihre Aufrufsyntax
dann prsentieren, wenn entweder kein
%&%
Parameter bergeben wurde, oder der
Um beide Variablen gleichzeitig auf den erste Parameter /? lautet.
jeweiligen Stand zu schalten: testen oder
Alle Batchdateien sollten in einem Regeln haben, aber ich habe auch gut zwei
Verzeichnis untergebracht werden, das Jahre gebraucht, um diese zu etwa 90%
auch in der Pfadangabe gesetzt wurde. einzuhalten. Wenn man seine Routinen nicht
Nach Mglichkeit sollte jede Batchdatei weitergeben oder verffentlichen will, kann
nicht mehr als zwei Parameter beim Start man sowieso darauf pfeifen
bentigen, damit der Bediener nicht
ellenlange Eingaben erzeugen mu. KILL.BAT - lschen mit Reserve
Die Batchdateien sollten so markante
Namen haben, das der Bediener sie schnell Der Computerfreak, der noch nie eine Datei
deuten und lernen kann. versehentlich und voreilig gelscht hat, drfte
wohl nicht menschlich sein. Wir Menschen
Keine Batchdatei sollte zu COM- oder EXE-
lernen ja aus Fehlern und entwickeln unsere
Programmen umgewandelt werden, da
Intelligenz gerade dadurch weiter.
diese Compiler entweder mit bestimmten
Manchmal dauert dieser Lernproze aber
Befehlskombinationen nicht fertig werden,
lnger und mu einem gehrig die Finger
oder die Technik nicht ausfhren knnen.
verbrennen, bis man endlich zur Einsicht
Auch die Zusammenlegung von Routinen
gelangt. So sind auch mir schon etliche Daten
zu einer riesigen Batchdatei, ist nicht
verlustig gegangen, die ich dann meist
immer frderlich, da die
mhsam rekonstruierte. Nun bin ich aber des
Ausfhrungsgeschwindigkeit darunter
Befehls DEL leid und habe eine Sicherung
leidet.
eingebaut, durch die Dateien
Fortgeschrittene Programmierer sollten
wiederhergestellt werden knnen:
lange Befehle in Variablen packen und
diese, statt der Befehle, in ihren Routinen @echo off
verwenden. if %1.==. goto err
Routinen die Schalter und externe Befehle md \kill > nul
copy %1 \kill > nul
benutzen, sollten die DOS-Version
del %1
ermitteln knnen, auf der sie gerade goto off
eingesetzt werden. Gegebenenfalls ms- :err
sen sie ihre Ttigkeit einstellen, wenn sie echo Zu lschende Datei fehlt!
nicht unter der laufenden DOS-Version :off
funktionieren knnen. Beim Aufruf von KILL.BAT, inkl. des Namens
REM-Zeilen sollten dann wieder entfernt der zu lschenden Datei, wird ein Verzeichnis
werden, wenn die Routine keine Fehler KILL angelegt, in die die zu lschende Datei
mehr aufweist. sicherheitshalber abgelegt wird. Danach wird
Sprungmarken funktionieren auch ohne die ursprngliche Datei gelscht. Folglich
die abschlieende :END Markierung, wurde die Datei nicht richtig vom Datentrger
weshalb man auf sie verzichten sollte. gelscht, sondern nur ins Verzeichnis KILL
Hinter dem PAUSE-Befehl und den transferiert. Von dort kann sie nun jederzeit
Sprungmarken sollten auch keine wiederhergestellt werden, indem man sie ins
Kommentare angefgt werden, da sie gewnschte Verzeichnis zurckkopiert.
wegen der -@ECHO OFF- Zeile eh nicht Sollte bereits ein Verzeichnis namens KILL
angezeigt werden. bestehen, so wird man dank der Nul-
Sollen Treiber, wie ANSI.SYS, Verwendung Umleitung, von der Fehlermeldung verschont.
finden, so sollte deren Vorhandensein Auch beim kopieren schweigt sich DOS
vorher ermittelt werden. deshalb aus.
Bevor eine Variable gesetzt wird, sollte Wem diese Sicherheitslschung nicht
mglichst geprft werden, ob diese nicht gefllt, bzw. wer ohne Reserve fahren
bereits existiert. Notfalls mu ihr mchte, ist ja nicht an die Benutzung von
ursprnglicher Inhalt in einer anderen KILL.BAT gebunden und kann wie bisher mit
Variable, oder einer Batchdatei, gesichert DEL arbeiten.
werden.
Sicherlich werden gerade die Anfnger groe
Schwierigkeiten mit der Einhaltung dieser
KnowHow: DIP-OS ndere nun die Zeile zwei von CUT.BAT wie
folgt:
Stringbearbeitung unter DOS
Unter der Stringbearbeitung versteht man ja if %1.==. c:\cut.ab.Portfolio
gemeinhin das Bearbeiten von Wrtern. So
trennt man z.B. das Wort Eis aus Eismeer Nach dieser nderung und dem erneuten
heraus und arbeitet mit dem so Start von CUT.BAT, wie immer ohne
herausgetrennten Eis weiter. Fr solche Parameter, werden Sie feststellen, das nur
Stringbearbeitung ist das DOS in der Regel noch lio von Portfolio brigbleibt.
nicht geeignet, obwohl diese Mglichkeit Bitte ndere nun die Zeile zwei von
schon Sinn macht, wenn man Datei-, CUT.BAT wie folgt:
Disketten-, Verzeichnisnamen, o.., if %1.==. c:\cut.a.Portfolio
herausfinden will.
Bei den groen PCs unter MS-DOS existiert Nach dem nunmehr dritten Start bleibt nur
aber eine unvorhergesehene Mglichkeit, die noch io vom Portfolio brig. Das ganze
auf dem Backslash basiert und mit der man Geheimnis liegt an der Dateiendung und dem
das Buchstabieren erreichen kann. Diese darauffolgenden Punkt:
funktioniert aber nicht auf dem PoFo! Besteht die Dateiendung aus vier Zeichen,
Durch Zufall bin ich aber auf eine hnliche z.B. .abc, so werden die letzten vier
Methode gekommen, mit der man von einem Buchstaben abgeschnitten. Besteht sie nur
Wort zwischen zwei bis vier Buchstaben aus drei Zeichen, z.B. .ab, so werden die
abschneiden kann. Probieren Sie dazu mal letzten drei Buchstaben abgeschnitten. Bei
CUT.BAT aus, welche Sie im Hauptverzeichnis nur zwei Zeichen, z.B. .a, werden nur die
der Ramdisk C: abspeichern mssen: letzten zwei Buchstaben abgetrennt.
Lassen Sie die Dateiendung, hier .ABC
@echo off
gnzlich weg, so werden generell die letzten
if %1.==. c:\cut.abc.Portfolio
echo %1 vier Buchstaben zum Inhalt des Parameters
%1:
Wer aufmerksam ist und sich bereits ein
if %1.==. c:\cut.Portfolio
wenig mit Batchdateien auskennt, wird
meinen, das CUT.BAT nicht Funktionieren Diese Trennung ist aber in jedem Fall nur
kann, da ein Aufruf der Datei C:\CUT.ABC mglich, wenn der Punkt vor dem
nicht mglich ist. Schlielich existiert erstens gewnschten Wort, hier Portfolio, nicht fehlt!
keine solche Datei und zweitens knnen vom Versuchen Sie eine Trennung bei Wrtern
DOS nur die Programme gestartet werden, durchzufhren, die ASCII-Charaktere
die mit .EXE, .COM oder .BAT enden - nicht oberhalb 128 beinhalten, z.B. , so wird
aber mit .ABC! die Trennung anders ausfallen. Aber das
Und dann lst auch noch der Anhang knnen Sie ja mal selbst ausprobieren!
.Portfolio Verwirrung aus, weil man CUT.BAT ist nur ein Beispiel um die
normalerweise Parameter durch Leerzeichen Stringbearbeitung zu demonstrieren. Wenn
getrennt bergibt! Sie also CUT.BAT durch die Eingabe von
Dennoch hat das so seine Richtigkeit und c:\cut.abc.Portfolio starten, so erhalten Sie
funktioniert, weil der PoFo sich nicht im als Ergebnis auch wieder den Wortfetzen olio
geringsten um die vorgegebene Endung auf dem LCD-Schirm.
kmmert und nur so zur Stringbearbeitung Sie knnten also genauso gut die folgende
gezwungen werden kann. Bisher zumindest. TEST.BAT im Hauptverzeichnis der Ramdisk
Starte bitte CUT.BAT ohne Parameter, also C: speichern...
durch die Eingabe von CUT und Du sollst
folgende Anzeige erhalten: @echo off
echo %1
olio
Wie unschwer zu erkennen ist, hat der PoFo ... und mit der Eingabe \test.123.permdata
also von dem Wort Portfolio nur noch die starten, um das Wort data angezeigt zu
letzten vier Buchstaben behalten. Bitte bekommen.
Ich bin jetzt auf jeden Fall darauf gespannt, Das MS-DOS Kompendium von Chris
wie Du diesen Trick in Batchdateien DeVoney. 1985, ISBN 3-89090-106-9, Markt
verwendest. & Technik Verlag.
Aus der Rolle fallen die folgenden Bcher:
Batchdateien in der Literatur Data Beckers groe MS-DOS Toolbox von
In Zeiten zunehmender Verfensterung ist es Helmut und Manfred Tornsdorf. 1990, ISBN
natrlich nicht leicht, Bcher zum Thema 3-89011-824-0, Data Becker. Dieses Buch
Batchdateien im Handel zu finden. Aber mit bietet eine ausfhrliche Einfhrung in die
etwas Glck und Geduld kann man gesuchte Batchprogrammierung und zustzlich viele
Bcher von Privat erwerben. Hilfsprogramme auf beiliegender Diskette.
Leider gibt es nur recht wenige Bcher in Softwarelexikon MS-DOS von Thomas Tai
deutscher Sprache dazu und diese sind meist und Peter Freese. 1988, ISBN 3-499-18152-
nur fr den wibegierigen Beginner 5, rororo Verlag. Es ist mehr fr den
interessant: engagierten MS-DOS Anwender gedacht, da
DOS Batch Programmierung von Wolfgang es u.a. beschreibt, ab wann welcher Schalter,
Weber. 1992, ISBN 3-8171-1266-1, Verlag welche Option und welcher Befehl in MS-DOS
Harri Deutsch. eingefhrt wurde. Aber auch Begriffe wie
BATCH-Betrieb und Automation unter DOS Akkustikoppler usw. werden dort erklrt.
und Windows 3.x/95 von Alois Kneisle. 1996 An Zeitschriften kann ich empfehlen:
(!), ISBN 3-446-18658-1, Carl Hanser Verlag. 1 Die Sonderhefte des PC-Welt Magazins
Dieses Buch geht sehr in die Tiefe. 2 Die ersten zwei Ausgaben des Magazins
So gehts! Utilities und Batchdateien von 100 Tips & Tools fr Windows & MS-DOS
Rudi Kost, Josef Steiner und Robert Valentin. vom Verlag VTP Frst
1993, ISBN 3-87791-467-5, Markt & Technik 3 Was ist denn DOS? vom KnowWare
Verlag. Verlag
Batch-Dateien - Einsteigerseminar von Dr.
Ekkehard Kaier. 1992, ISBN 3-89360-618-1, Ein bis zwei Seiten mit DOS-Tricks und
bhv Verlag. Batchdateien findet man auch monatlich in
Batchdateien fr MS-DOS 6.0 entwickeln den Zeitschriften PC-Welt, PC Praxis, PC go!,
von Hellermann und Lemme. 1993, ISBN 3- CHIP, DOS und der Highscreen Highlights.
7723-5023-2, Franzis-Verlag. Ansonsten kann ich den Datendienst
Stapeljobs unter MS-DOS von Paulissen & CompuServe wrmstens empfehlen, speziell
Paulissen. 1990, ISBN 3-88963-241-6, das MSDOS-Forum (GO MSDOS), da man
Hofacker Verlag. dort die besten Batchprogrammierer antrifft.
BATCH-PROGRAMMIERUNG unter DOS Selbst wenn eine Frage schon dreiigmal
von Heinz-Peter Gla. 1991, ISBN 3-88322- gestellt wurde, wird sie auch beim 31. mal
332-8, IWT Verlag. beantwortet!
Im Frhjahr 96 soll angeblich noch ein ber den PC-File-Finder von CompuServe
Buch mit dem Titel Batch mal wieder! (GO PCFF) kann man auch eine ganze Reihe
erscheinen. Einer der Autoren soll Werner von Batchdateien finden, wenn man als
Tikki Kstenmacher sein. Dem Titel nach, Schlsselworte (Keywords) BATCH und DOS,
knnte es ein Buch fr fortgeschrittene oder als Extension BAT eintrgt.
Batchprogrammierer werden. Hoffen wir also
das Beste!
Weitere Bcher, die meist ein Kapitel zum
Leerzeilen bei der Bildschirm-
Thema Batchdateien haben, sind: MS-DOS 6 ausgabe durch Batchdateien?
- Tips & Tricks von Helmut und Manfred Normalerweise kann mit dem -ECHO-Befehl
Tornsdorf. 1993, ISBN 3-8158-1014-0, Data keine Leerzeile auf dem Schirm produziert
Becker. werden. Bei den groen PCs behilft man sich
MS-DOS Trainer von Bach und Backer. deshalb mit einem Trick und verlngert den
1995, ISBN 3-8043-3019-3, Augustus Verlag. Befehl um beispielsweise einen Punkt: -
ECHO.- , doch der PoFo spielt da wieder nicht
mit.
Wildcards ? und * nur mit Dateinamen Sprungmarke auch vom DOS gefunden und
funktionieren, sollte man immer eine FOR- ausgefhrt. Sogar ohne die Anzeige der Zeile
Schleife verwenden, wenn eine, oder mehrere auf dem Bildschirm!
Dateien bearbeitet werden sollen! Man Was lernen wir also daraus?
erreicht durch die FOR-Schleife auf jeden Fall 1. Egal ob das ECHO on oder off ist, eine
eine hhere Flexibilitt. Zeile, die mit einem Doppelpunkt beginnt,
wird nie auf dem Bildschirm angezeigt!
2. Mchte man zu Testzwecken die
Sprungmarken - Teil 3 Ausfhrung einer Sprungmarke verbieten und
Es soll ja sehr sparsame Leute geben, deren statt dessen einen Abbruch erzwingen, so
Sparsamkeit sich sogar bei der fgt man den Klammeraffen @ vor dem
Programmierung von Batchdateien Doppelpunkt der Sprungmarke ein! Ein Punkt
bemerkbar macht! . hat brigens dabei dieselbe Wirkung!
So sparen sie sich die blicherweise Letzteres ist nur bei der Erprobung und
einleitende Anfangszeile @ECHO OFF, wenn Fehlersuche zu empfehlen. Oder hat jemand
die gesamte Batchdatei nicht mehr als elf eine Idee, wie man das sonst nutzen knnte?
Zeilen lang wird. Dafr beginnen sie dann die
zu schreibenden Batchzeilen mit dem KnowHow: DIP-OS
Klammeraffen @, der die Bildschirmausgabe
unterdrckt: Bedingtes SHIFTen
Mit dem Befehl SHIFT werden Parameter
@cls verschoben, oder Schleifen konstruiert, die in
@dir /p
Abhngigkeit von Parametern ausgefhrt
Weniger Geizige wrden dieselben Zeilen so werden. Wer also diesen Befehl einsetzt, wei
schreiben: in der Regel genau, was bezweckt werden
soll.
@echo off Durch ein paar Experimente bin ich auf
cls neue Erkenntnisse zu diesem Befehl
dir /p gekommen, auch wenn ich noch keine
Routine prsentieren kann, die davon
Wer beide Versionen abtippt und speichert,
profitiert. Angeblich ist der Befehl SHIFT nicht
wird feststellen, das die erste Version um
durch Parameter, Variablen oder Optionen
neun Bytes krzer ist und doch genau wie die
ergnzbar. So kann man z.B. keinen
zweite Version funktioniert. Warum sollte
Parameter angeben, ab dem geshifted
man also eine Batchdatei mit der Zeile
werden soll. Kurioserweise kann ich aber
@ECHO OFF beginnen, wenn ein Klammeraffe
beim PoFo eine beliebige Variable nach -
@, vor jeder Zeile, dasselbe bewirkt??? Weil
SHIFT- angeben, die damit das Verhalten von
Sprungmarken da wieder einen Strich durch
-SHIFT- ndern kann:
die Rechnung des Programmierers machen,
lautet darauf die Antwort!!! Denn steht vor -SHIFT %!%-
einer Sprungmarke ein Klammeraffe, so kann
diese Sprungmarke nicht vom DOS Wenn keine Variable! existiert, so wird ganz
angesprungen werden. Man erhlt dann normal geshifted. Enthlt aber die Variable!
nmlich die bekannte Fehlermeldung irgendwelchen Inhalt, so bekommt man die
Sprungmarke nicht gefunden! Fehlermeldung Falscher Parameter und -
Mit diesen Zeilen knnt ihr das ja einmal SHIFT- wird nicht ausgefhrt. Auch die
ausprobieren: Variable bleibt unverndert.
Weil ich die Fehlermeldung unterdrcken
@goto jj wollte, leitete ich sie dann nach NUL um:
@rem
@:jj -SHIFT %!%>nul-
@dir /p
Solange die Variable! nicht existiert, wird
Lt man dagegen den Klammeraffen vor der auch ordnungsgem geshifted. Wenn aber!
Sprungmarke :jj wieder weg, so wird die existiert, erscheint nicht nur obige
Besonders bei den Befehlen -MD-, -COPY- Ein DOS vor Version 3.30
und -REN- kommt das Gert NUL zur vollen
Geltung, lt sich aber noch bei vielen ... kennt den Klammeraffen @ nicht, mit dem
anderen Befehlen einsetzen. Den Nutzen man in der Regel die erste Zeile einer
bemerkt man erst beim ausprobieren! Batchdatei einleitet. Unser PoFo ist da eine
Etliche Wochen funktionierte unsere rhmliche Ausnahme!
spezielle Batchdatei, die vollautomatisch alle Mit dem Klammeraffen @ erreicht man, und
Dateien von A: auf C: kopierte, tadellos, aber das sollte bereits bekannt sein, die
nun tritt trotz der NUL-Umleitung ein Fehler Unterdrckung der Bildschirmausgabe, wenn
auf, den der Bediener mit Abbruch, eine Batchzeile abgearbeitet wird. Lt man
Wiederholen oder Ignorieren beantworten z.B. diese Zeilen:
mu. Wozu leiten wir alle REM TEST.BAT
Computerkommentare nach NUL um, wenn er ECHO Hallo User!
doch eine Fehlermeldung ausgibt? Es handelt
sich dabei um einen so elementaren Fehler, als TEST.BAT laufen, so ergeben sich
da der Computer unsere Umleitung folgende Bildschirmausgaben des DOS:
ignorieren mu, damit der Bediener die
c:\test>REM TEST.BAT
Chance hat, diesen Fehler zu beseitigen.
Kurz: Der Computer kann den Fehler nicht c:\test>ECHO Hallo User!
von sich aus beheben, oder gibt es einen der Hallo User!
selbstndig Disketten wechseln kann?
c:\test>
Guten Batchprogrammierern, und die
wollen wir ja alle werden, ist aber selbst Stellt man dagegen beiden Zeilen den
diese Unterbrechung ein Dorn im Auge. Sie Klammeraffen @ vor(an):
geben daher die Antwort selbst durch eine @REM TEST.BAT
bereitgestellte Datei, die die Antwort A, W @ECHO Hallo User!
oder I an den Tastaturpuffer bergibt.
Knnen wir also einen Abbruch verantworten, so sieht die Bildschirmausgabe dann so aus:
oder wollen den Fehler auf unsere Art Hallo User!
c:\test>
behandeln, so erstellen wir uns doch einmal
Um nicht vor jede Zeile den Klammeraffen
diese Datei mit einem Texteditor! Editor
schreiben zu mssen, gibt es den globalen
starten, <A> eintippen, Rettern- bzw.
Befehl:
Entertaste drcken und den Text unter dem
Namen A.DAT abspeichern - fertig. In ECHO OFF
unserem bisherigen Kopierbefehl -COPY A:*.* mit dem das DOS die Anzeige der gerade
C: > NUL- gilt es nun, die Datei A.DAT auszufhrenden Batchzeile unterbindet. Weil
einzubinden. solche Anzeigen nur stren und viel zu
Weil der geplante Tastendruck <A> aus der schnell ber den Bildschirm huschen, beginnt
Datei kommen soll, mu eine Umleitung aus man also eine Batchdatei mit der Zeile:
der Datei erfolgen. Dazu mu das
gegenteilige Umleitungszeichen < ECHO OFF
verwendet werden, inkl. der zu Damit auch diese Zeile nicht angezeigt wird,
entnehmenden Datei, die in unserem Fall stellt man den Klammeraffen voran:
A.DAT heit. Die neue Syntax lautet nun: - @ECHO OFF
COPY A:*.* C: < a.dat > nul-. Und schon wird nur das vom DOS auf dem
Sollte also in Zukunft beim kopieren ein Bildschirm ausgegeben, was aus den
Fehler auftauchen, so wird die Aktion Befehlen ECHO, DIR, COPY, HELP, CHKDSK,
kommentarlos abgebrochen. Diese Technik DATE, TIME, FORMAT usw. resultiert. Auch
mu aber jeder Batchprogrammierer auf die Fehlermeldungen werden ausgegeben.
eigene Gefahr verwenden!!! Aber was tun, wenn das DOS nicht die
Versionsnummer 3.30 trgt und die
Batchdatei unter diesem DOS laufen soll? Das
DOS wrde nmlich die Zeile:
@ECHO OFF echo Hier knnen beliebig viele Zeilen mit ECHO
ausgegeben werden, damit
mit einer Fehlermeldung quittieren: Befehl echo man den Anwender ber alles informieren kann!!!
oder Programm nicht gefunden, da es den :off
Klammeraffen @ nicht kennt. Das ECHO wre
dann auch weiterhin eingeschaltet! Wird eine Batchdatei gestartet, die diese
Aber die Lsung ist ganz einfach: Man lenkt Zeilen enthlt, so informiert sie den
die Fehlermeldung zum Gert NUL um und Anwender, wenn dieser eine der folgende
wiederholt den Befehl ECHO OFF, aber Zeichenfolgen, als Parameter %1, bergeben
diesmal ohne @: hat:
@ECHO OFF>NUL
ECHO OFF ? h H help HELP /? /h /H /help /HELP -? -h -H -help -
Und schon luft auch diese Batchdatei unter HELP
DOS Versionen vor 3.30! Okay, okay, es
Und wenn kein Parameter beim Start
kommt nicht mehr allzu hufig vor, das eine
angegeben wurde, so wird der Anwender
DOS Version vor 3.30 noch in Betrieb ist,
ebenfalls informiert!
aber wenn doch, dann wit Ihr nun jeden-
falls, wie Ihr das Problem ganz galant lsen
knnt.
4DOS fr den PoFo und andere
Schlielich ist diese Lsung dann unter MS-DOS Pockets
jedem DOS, ohne nderung, einsetzbar!
Knnt Ihr Euch noch an diese MS-DOS Erweiterung erinnern?
Bis zur MS-DOS Version 3.30 feierte die Erweiterung 4DOS
groe Erfolge, da sie das MS-DOS um sehr interessante und
Erste Hilfe!!! ntzliche Befehle ergnzte:
So kann man mit dem Alias-Befehl eigene
Der erste Start einer fremden Batchdatei ist Befehle kreieren, mit Gosub und Return in
mit viel Ungewiheit verbunden! So wei Batchdateien herumspringen, mit Input und
man oft nicht, welche Parameter und wie Inkey Tastaturabfragen in Variablen packen
viele Parameter angegeben werden mssen, (kein Errorlevel!), mit Screen Texte an
welche Variablen vorher schon bereitzustellen beliebiger Stelle des LCD-Schirms plazieren,
sind und was die Batchdatei berhaupt mit Call zwischendurch bis zu fnf andere
erledigen soll. Batchdateien aufrufen, mit Text und Endtext
Darum sollte man den Anwender nicht mit ganze Textblcke ausgeben, mit Pushdir und
diesen Fragen im Regen stehen lassen, Popdir sich Verzeichnisse und Laufwerks-
sondern eine Hilfsfunktion implementieren, bezeichnungen merken u.v.m.
beim schreiben des Batchprogrammes, die Neulich fand ich also 4DOS inkl. Handbuch
dem unerfahrenen Anwender etwas unter die auf dem Grabbeltisch eines EDV- Hndlers
Arme greift, bzw. ihn informiert! Ich habe mir und nahm es auch nach kurzem Studium mit.
dafr die folgenden Zeilen ausgedacht: Problemlos konnte ich 4DOS auf meinem
@echo off PoFo mit Bios 1.072 installieren. Eigentlich
for %%a in (. h. H. help. HELP. -h. -H. -help. htte mich das ja schon stutzig machen
-HELP.) do if %1.==%%a goto help mssen, nachdem was man immer wieder
if %1.==?. goto help mit dem PoFo erlebt. Der Reihe nach ging ich
if %1.==-?. goto help also die neuen Befehle durch und probierte
if %1.==/?. goto help
if %1.==/h. goto help
sie aus.
if %1.==/H. goto help berraschenderweise funktionierte das Gros
if %1.==/help. goto help problemlos, aber die die nicht funktionierten,
if %1.==/HELP. goto help waren sinnigerweise die wichtigsten!
rem CLS, LIST, TYPE, HELP, KEYSTACK und DIR
rem Hier wird dann das eigentliche Batchprogramm wollten nicht wie ich es wollte. Aber weil man
eingebunden!!!
rem
sich mit 4DOS eigene Befehle kreieren kann,
goto off habe ich diese mit einigen Tricks und
rem Hier beginnt die erste Hilfe! Batchdateien selber nachempfunden. Leider
:help ist es dazu unerllich 4DOS zu verlassen
und ins DIP-OS zurckzukehren. Nur bei den
reparierten Befehlen CLS und KEYSTACK, mir dann diesen Hilfstext auf dem PoFo unter
verbleibt man im 4DOS, sofern man nicht mit 4DOS anzeigen lie, funktionierte gleich
KEYSTACK explizit den Ausstieg erzwingt! darauf meine CLS- Reparatur nicht mehr! Auf
Einige bisher vertraute Befehle des DIP-OS die Schliche bin ich dem Fehler gekommen,
sind unter 4DOS leider nicht mehr als ich mir diesen Hilfstext mal in der
zugnglich: APP, CHKDSK, FDISK, FORMAT Textverarbeitung des PoFo ansah. Hinter dem
und OFF. Auch diese konnte ich aber mit Textende prangte doch glatt das
FAKE, ALIAS und div. Batchdateien dem Dateienzeichen ^Z. Kaum hatte ich das
4DOS beibringen. Wendet man nun die gelscht und den PoFo von Grund auf neu
Befehle APP, CHKDSK und FORMAT wie gestartet, war dieser Fehler nie mehr
gewohnt an, so ist die Rckkehr ins DIP-OS gesehen!
vorprogrammiert. Bei der Verwendung von
OFF gelangt man aber beim erneuten ALLREAD.BAT - fr Leseratten
Einschalten des PoFo, automatisch ins 4DOS.
Wer eine ganz bestimmte Dateigruppe
Hat man 4DOS autostartend auf der
sichten will, oder mu, ist gezwungen den
Memorycard installiert, so gelangt man auch
TYPE-Befehl entsprechend hufig einzugeben.
nach dem FDISK-Befehl wieder ins 4DOS.
Diese Monotonie macht natrlich krank und
Die Doskey-Funktion gehrt zu den
schreit geradezu nach einer Batchdatei:
interessantesten Erweiterungen, da man nun
alle Eingaben mit den Cursortasten @echo off
oben/unten durchblttern, modifizieren und cls
reaktivieren kann. if %1.==. goto err
Im groen und ganzen ist 4DOS also eine for %%d in (%1) do type %%d /p
goto off
sehr sinnvolle Ergnzung zum DIP-OS und :err
bringt viele Mglichkeiten zur echo Dateigruppenangabe fehlt!
Batchprogrammierung mit sich. Obwohl ich :off
UPDATE und PORTDIV installiert habe,
erschienen zwar so manchmal unsinnige Ruft man diese Datei mit ALLREAD *.BAT auf,
Fehlermeldungen, wie z.B.: Unknown so sollte man alle Batchdateien seitenweise
command lias, aber diese beeintrchtigten angezeigt bekommen. Doch erste Tests
die Arbeitsweise des PoFo bislang nicht. ergaben, das diese Routine nicht unter jeder
Hier in Deutschland wurde dieses DOS-Version funktioniert, da es nicht immer
Sharwareprogramm von der Kirschbaum die Option /p beim TYPE-Befehl gibt.
Software GmbH, Kronau 15, 8901 Emmering Hier die technische Erluterung:
vertrieben. Ob und zu welchem Preis es noch Zunchst wird nach dem Aufruf geprft, ob
erhltlich ist, entzieht sich meiner Kenntnis. berhaupt eine Dateiengruppe als Parameter
Kurios fand ich nur, da ich in einer %1 angegeben wurde. Entweder springt DOS
Programmliste des Atari-Forums aus dem zur Sprungmarke :ERR und gibt eine
CompuServe, Stand: Juni 93, diese tolle Fehlermeldung aus, oder es fhrt mit der
Erweiterung nicht zu finden war. Dabei FOR-Schleife fort. In dieser verweilt das DOS
stammt 4DOS aus den USA und wurde 1989 solange, bis die Menge (%1), also alle
programmiert! Vielleicht liegt es aber auch Dateien die der Maske entsprechen, die als
daran, da man ohne das dazugehrige Parameter bergeben wurde, auf dem Schirm
Handbuch nicht sehr weit kommt, gerade auf ausgedruckt wurde. Danach entfleucht
dem PoFo, da dort die Help-Funktion nicht ALLREAD.BAT kommentarlos zur
ohne weiteres installierbar ist. Die gesamte Sprungmarke :off und stellt die Arbeit ein.
Erweiterung bentigt schon alleine auf einer ANSI.SYS-TIP: Escapesequenz
Diskette etwa 330 KB. Das man mit dem Bildschirm- und
Zum Abschlu wieder eine Ungereimtheit, Tastaturtreiber ANSI.SYS viel erreichen kann,
die mir in diesem Zusammenhang mit dem ist wohl unumstritten. Oftmals gibt man eine
PoFo auffiel: Ich habe die 4DOS-Befehle aus solche Befehlsfolge mit dem PROMPT-Befehl
dem Handbuch in meinen PC eingetippt und ein, da man sonst die Escapesequenz
dann auf die Memorycard bertragen. Als ich
(Charakter 27, Darstellung ^[), nicht unter gewnschte Syntax, bevor ich den Text unter
DOS erzeugen kann. einem neuen Namen abspeichere.
So kann man seinem Computer ein X fr Weil viele Wege nach ROM fhren, kann
ein U vormachen, wenn man ANSI.SYS man sich natrlich die Escapesequenz auch
installiert hat und den Befehl durch andere Programmiersprachen
PROMPT$e[X;Up eingibt. Leider wird aber ergaunern!
durch diese Eingabe auch das Prompt Portfolio-User haben es dagegen etwas
gelscht, welches danach also rekonstruiert einfacher und behelfen sich mit der
werden mu. eingebauten Tabellenkalkulation. Dort wird
Zwar kann man das auch mit der folgenden einfach in die erste Zelle, des ansonsten
Batchdatei realisieren, aber man verschenkt leeren Arbeitsblattes, der Wert 27
doch wertvollen Speicherplatz: eingegeben. Nach dem diese Eintragung
unter dem Namen UNNAMED.WKS
@set op=%prompt% gespeichert wurde, ldt man diese in die
@prompt$e[X,Up Textverarbeitung und lscht alle Zeichen vor
und hinter der Zeichenfolge ^[.
@prompt=%op%
Anschlieend setzt man vor ihr noch den
Befehl ECHO, bevor man den so
Krzer und einfacher ist da der Weg ber den
entstandenen Text als ANSIECHO.BAT
Befehl ECHO, da erstens ECHO mit @ECHO
abspeichert.
OFF ausgeschaltet sein darf und zweitens,
Auch alle anderen Steuerzeichen kann man
keine Leerzeile auf den PromptBefehl folgen
so einfangen und in Variablen festhalten!
mu, die die Einstellung vornimmt:
PS: Probiert doch mal in der PoFo-
@echo off Textverarbeitung die Tastenfolge ALT- ALT-
echo ^[[X;Up aus. Dieser Weg ist einfacher und erzeugt
ebenfalls das ESC-Zeichen.
Problematisch an dieser Version ist aber, wie
eingangs erwhnt, die Erzeugung der Batch bearbeitet das Batchver-
einleitenden Escapesequenz, mit der jede
ANSI betreffende Einstellung beginnen mu. zeichnis
Zwar kann man die Zeichenfolge ^[, die fr Normalerweise zieht man sich dabei, pardon
die Escapesequenz steht, per Tastatur einzeln der Batchdatei, den Boden unter den Bytes
eingeben, aber sie ist dann nicht weg! Hat nmlich diese Batchdatei ihren
gleichbedeutend wie die Escapesequenz ^[, Stammplatz in dem Verzeichnis, in dem alle
da sie dann aus zwei Zeichen besteht, wh- Batchdateien stehen und dieses Verzeichnis
rend die Escapesequenz tatschlich nur ein mu vorbergehend gelscht werden, so
Zeichen beinhaltet, obwohl zwei auf dem kann das DOS die entsprechende Batchdatei
Bildschirm ausgegeben werden. nicht mehr wiederfinden und bricht etwa mit
folgender Meldung ab:
Es bleibt einem also nur der Ausweg ber
eine hhere Programmiersprache, damit der Diskette mit Stapeldatei einlegen!
Charakter 27 in Batchdateien genutzt werden Wenn bereit eine beliebige Taste drcken.
kann. Ich habe mir dieses Zeichen mittels
Da aber die Batchdatei sich selbst ausradiert
GW-BASIC geklaut und in die Batchdatei
hat, kann man so viele Tasten drcken wie
ANSIECHO.BAT geschrieben:
man will. Denn das DOS wird diese
10 open ansiecho.bat for output as #1 Batchdatei nicht mehr finden!
20 print #1,ECHO ;chr$(27);chr$(91); Einzig der Abbruch mit <STG>+<C> hilft
30 close kurzfristig aus dieser Misere
herauszukommen. Die restlichen geplanten
Mchte ich also nun eine Einstellung mit Befehle mssen dann von Hand eingegeben
ANSI.SYS vornehmen, so lade ich werden, damit man die Ordnung
ANSIECHO.BAT in meine Textverarbeitung wiederherstellen kann.
und ergnze den ECHO-Befehl um die
Ich habe dieses schon mehrmals erlebt und [24] ::: EXTERNAL : FIND, MORE
eine Lsung geschaffen, die die Batchdatei [25] ::: PERMVAR : PATH
[26] ::: OPTIONVAR : BDV, BDY
aus dem kritischen Verzeichnis verlagert:
[27] ::: TEMPVAR : FL
[28] ::: USEDFILE : BATHELP.BAT
@echo off
[29] ::: TEMPFILES : unknown - made by FIND & MORE
if %1.==. goto err
[30] ::: MAKEFILE : none
copy c:\batch\%1.bat c:\>nul
[31] ::: SCREEN : 80 columns, 25 rows
c:\%1 %2 %3 %4 %5 %6 %7 %8 %9
[32] ::: VERSION : 09 Feb 1996
:err
[33] ::: TESTED ON : MS-DOS 6.22
echo Aufruf mit:
[34] ::: AUTHOR : Lars Aschenbach, Germany
echo BATCH Batchdatei Parameter
[35] :::
[36] if %PATH%.==. echo.
Mchte ich also das Verzeichnis BATCH mit [37] if %PATH%.==. echo Cant work: Variable PATH is
meiner Batchdatei DEFRAG.BAT missing!
defragmentieren, so starte ich diesen [38] if %PATH%.==. goto err
Vorgang mit: [39] set | find windir>nul
[40] if not errorlevel 1 if errorlevel 0 echo.
-BATCH DEFRAG \BATCH- [41] if not errorlevel 1 if errorlevel 0 echo Cant work:
Windows is running!
[42] if not errorlevel 1 if errorlevel 0 goto err
Die Routine BATCH.BAT kopiert daraufhin [43] if not exist %BDV%%BDY%nul if exist
DEFRAG.BAT in das Hauptverzeichnis von %BDV%%BDY%\nul set bdy=%BDY%\
C: und startet anschlieend DEFRAG.BAT [44] if not %1.==. shift
vom Hauptverzeichnis von C:. Zwar erfolgt [45] if exist %BDV%%BDY%%0.bat set
dieser Start nur mit maximal acht fl=%BDV%%BDY%%0.bat
Parametern, aber das drfte in den meisten [46] if exist %BDV%%BDY%%0.bat if %FL%.==. goto err
[47] if exist %BDV%%BDY%%0 set
Fllen auch gengen. Nachdem die fl=%BDV%%BDY%%0
eigentliche Defragmentierung abgeschlossen [48] if exist %BDV%%BDY%%0 if %FL%.==. goto err
wurde, mt Ihr die DEFRAG.BAT [49] if exist %0.bat set fl=%0.bat
eigenhndig aus dem Hauptverzeichnis von [50] if exist %0.bat if %FL%.==. goto err
C: entfernen, weil DEFRAG.BAT nicht [51] if exist %0 set fl=%0
rekursiv programmiert wurde! [52] if exist %0 if %FL%.==. goto err
[53] if %FL%.==. goto err
[54] find :::<%FL% | find find /v | more
[01] @echo off [55] echo No (more) lines of documentation in %FL%
[02] cls found!
[03] echo i+ [56] :err
[04] echo Lars Aschenbachs Batchfiles [57] if not %PATH%.==. if %FL%.==. echo.
[05] echo [58] if not %PATH%.==. if %FL%.==. if %0.==bathelp.
[06] echo in action: BATHELP .BAT v02-09-96 echo Try: BATHELP filename[.ext]
[07] echo for DOS 3.30 or higher [59] if not %PATH%.==. if not %0.==bathelp. if %FL%.==.
[08] echo + echo File not found!
[09] rem [60] set fl=
[10] ::: User Explanation: [61] echo.
[11] :::
[12] ::: BATCHFILE : BATHELP.BAT
[13] :::
[14] ::: FUNCTION : show documentation of batch- or
other files
[15] ::: SYNTAX : BATHELP filename[.ext]
[16] ::: EXAMPLES : BATHELP bathelp or: BATHELP
readme.1st
[17] ::: GET HELP : BATHELP
[18] ::: HINT : wildcards * ? arent allowed in filename
and extension
[19] ::: HINT : lines including ::: get interpreted as
documentation
[20] :::
[21] ::: Technical Explanation:
[22] :::
[23] ::: DOS : 3.30 or higher
Umlaute an- oder abschalten! Und hier noch UMLT-J.BAT, die die Umlaute
Mit dem Erwerb des Thermodruckers SHARP etc. wieder herstellt:
CE 126P, der in einer speziellen Version fr
@echo off
den PoFo angeboten wurde, kamen Probleme cls
mit den Umlauten auf mich zu. echo [;p
Dieser kleine Drucker beherrscht sie ja leider cls
nicht und gibt statt dessen japanische echo [;p
Hieroglyphen aus. cls
echo [;p
Weil ich mir dieses Problem auch mit
cls
anderen Druckern vorstellen kann, habe ich echo [;p
mir zwei Batchdateien kreiert, mit denen ich cls
die Umlaute entsprechend durch echo [;p
AeOeUeaeoeue ersetze oder wieder auf cls
zurckstelle. echo [;p
cls
Will ich also einen Text mit o.g. Drucker
echo Umlaute wieder hergestellt!
ausdrucken, so rufe ich UMLT-N.BAT auf,
bevor ich mit dem schreiben des zu Wenn ihr diese Batchdateien abtippen wollt,
druckenden Textes beginne. Habe ich den so mt ihr die Zeichenfolge ^[ durch
Text dann fertig geschrieben und folgende Tastendrcke erzeugen: ALT+
ausgedruckt, so stelle ich die Umlaute wieder und danach ALT+. Erst nachdem ihr dann
mit UMLT-J.BAT her. die ALT-Taste loslat, erscheint die
Allerdings funktionieren diese beiden Zeichenfolge ^[ auf dem Bildschirm,
Batchdateien nur dann, wenn man den vorausgesetzt, Ihr gebt diese Zeilen in der
Bildschirmtreiber ANSI.SYS in der Textverarbeitung des PoFo ein!
CONFIG.SYS installiert hat. Besorgt euch Bereits bestehende Texte, die die Umlaute
dafr die Datei ANSI.SYS und kopiert sie in etc. enthalten, werden allerdings nicht
das Verzeichnis C:\SYSTEM. Anschlieend durch die o.g. Batchdateien verndert. Aber
mt Ihr noch folgende Zeile an eure unter der Zuhilfenahme von FAKE.COM
CONFIG.SYS hngen: knnte man auch eine nachtrgliche
DEVICE=C:\SYSTEM\ANSI.SYS Umstellung erreichen. Momentan sehe ich
dafr noch keine Veranlassung, weshalb ich
Zu guter letzt mu noch ein diese Aufgabe gerne zur Disposition stelle.
Warmstart(Reset) mit den Tasten Resmee: Wer einen Drucker benutzt, der
STRG+ALT+EINF/ENTF erzeugt werden, keine Umlaute darstellen kann, kann mit
damit die o.g. Batchdateien auch wirklich diesen Batchdateien besser lesbare Texte
tadellos funktionieren. ausdrucken!
Hier die Batchdatei UMLT-N.BAT, die die
Umlaute auf Ae etc. umstellt:
@echo off
cls
echo [;uep
zwar durch -ECHO %1-. Die Befehlszeile - letzte Eingabe zugewiesen bekommt, enthlt
TYPE CON>>ANTW.BAT- wartet dann auf die sie auch unsere Eingabe, wenn wir die
Eingabe und hngt diese, nach dem Return-Taste gedrckt haben. Um unsere
einmaligen drcken der Return-Taste, an Eingabe also in "ANTW.BAT" zu kommen,
"ANTW.BAT" an. Leider wird aber die Eingabe mu nun doch auf den Befehl -TYPE
zweimal hintereinander angehngt, weshalb CON>>ANTW.BAT- zurckgegriffen werden.
ich noch mit -ECHO CLS>>ANTW.BAT-, den Weil aber kein Bediener die groe Lust
Befehl zum Bildschirmlschen anhnge. Dies verspren drfte, seine Eingabe noch einmal
hat folgenden Sinn: Meistens wird die blind zu wiederholen und weil das
Eingabe keinem DOS-Befehl oder einem Eingegebene bereits der Taste <F3>
Programmnamen entsprechen, weshalb eine zugewiesen wurde, fordern wir also nun den
Fehlermeldung auftritt, sobald die Zeile von Bediener auf, genau diese Taste <F3> zu
"ANTW.BAT" abgearbeitet wird, die das drcken. Dadurch wird die letzte Eingabe
Duplikat der Eingabe enthlt. Durch das wiederholt und man mu abschlieend die
angehngte -CLS- wird die Fehlermeldung Return-Taste drcken, damit das Getippte
zwar nicht unterdrckt, aber sehr schnell wieder in "ANTW.BAT" landet.
weggeblendet, um keine Verwirrung zu Man mu also diese Unbequemlichkeit mit
stiften. <F3> & <Return> hinnehmen, wenn man
Nachdem das -CLS- also in "ANTW.BAT" seine Eingabe beim tippen beobachten will.
gelandet ist, wird noch die folgende Zeile an Aber ich denke, da man mit diesem kleinen
"ANTW.BAT" angehngt: -ECHO Deine Haken leben kann. Ansonsten gibt es zum
Eingabe lautete: %antw%-. Ihr merkt schon, diesem Thema ja auch gengend
heute werden mal wieder sehr viele gehngt! Zusatzprogramme.
Diese Zeile mu zwar nicht sein, aber ich Eine Bemerkung zum Schlu:
mchte gerne eine Besttigung meiner Ich habe zwar auch versucht die Eingabe
Eingabe bekommen. Wollen wir nicht alle sichtbar zu halten und auf die Tastendrcke
besttigt werden? Genug des Tumors, ber <F3> und <Return> zu verzichten, konnte
den man trotzdem lacht, jetzt folgt der Aufruf aber das Eingegebene nicht in einer Variablen
von "ANTW.BAT", durch die Zeile -antw-. einfangen, oder als Parameter definieren. Es
Konstruieren wir also nun eine beispielhafte ist zwar schade, aber nicht machbar, oder???
"ANTW.BAT", in der die Frage nach dem
Befinden mit "gut" beantwortet wurde:
@echo off
set antw=gut
gut
cls
echo Deine Eingabe lautete: %antw%
Unbekannter Befehl in der machte. Schlielich hatte ich ja nur die Werte
von FILES und BUFFERS gendert, anstatt
CONFIG.SYS einen Befehl zu lschen. Ich startete die
Nur selten schreibe ich eine neue Textverarbeitung erneut und nderte nun den
CONFIG.SYS auf meinen PoFos, oder ndere Wert von FILES wieder auf sechs, speicherte
die bestehende ab. Doch neulich beim erneut ab und startete zum dritten mal den
Experimentieren, kam ich wieder in die PoFo. Jetzt bekam ich wieder die oben
Verlegenheit eine neue CONFIG.SYS zu genannte Fehlermeldung zu Gesicht und war
schreiben. Also schaute ich wieder einmal ins noch mehr verwundert als vorher. Sie, die
Handbuch meines PoFo und schrieb die dort Fehlermeldung, mute folglich durch den
abgedruckten Befehle zur CONFIG.SYS ab. Wert von FILES entstanden sein, obwohl sie
Weil mir die Werte fr die Befehle FILES und eigentlich eine andere Fehlerquelle angibt.
BUFFERS viel zu hoch erschienen, gab ich Schlielich ist ein falscher Wert nicht mit
folglich kleinere Werte an und speicherte die einem unbekannten Befehl einfach
neue CONFIG.SYS auf der Ramdisk C: ab. gleichzusetzen!
Nachdem ich auch alle anderen Aber tatschlich, nachdem ich den Wert von
Vorbereitungen abgeschlossen hatte, startete Files von mal zu mal um eins erhhte, bekam
ich also den PoFo mit dem Affengriff ich diese Fehlermeldung nicht mehr, als der
(STRG+ALT+EINF/ENTF) neu durch. Wert von FILES acht, oder mehr betrug!
Kurz darauf erhielt ich die Fehlermeldung Sollte diese Fehlermeldung einmal bei Euch
Unrecognized command in CONFIG.SYS, die auftauchen, so habt Ihr hoffentlich nun
ich bis dato noch nie gesehen hatte. Die gelernt, das der Wert von FILES nicht unter
deutsche bersetzung dieser Fehlermeldung acht sein darf, damit Ihr Euch nicht bei der
bedeutet Unbekannter Befehl in Fehlersuche im Kreis verlauft!!!
CONFIG.SYS, sofern mich mein Kontrolliert also bei dieser Fehlermeldung
Schulenglisch nicht im Stich lt. die Zeile mit FILES und setzt den Wert
Zwar ergab sich dann spter noch ein nicht mindestens auf acht, bevor Ihr nach anderen
nennenswerter Fehler, aber weil der auf Fehlerquellen sucht. Wie gesagt, die
meiner Vergelichkeit beruhte, konnte ich Fehlermeldung ist irritierend, da sie nicht den
Schussel den leicht beheben. Deshalb lud ich wirklichen Fehler beschreibt! Es kann
die CONFIG.SYS zunchst in die interne Text- natrlich auch einmal vorkommen, das Ihr
verarbeitung und kontrollierte die folgenden ein unerlaubtes Kommando in die
Zeilen, die ich ja vorher selbst geschrieben CONFIG.SYS schreibt, oder ein erlaubtes
hatte: falsch eintippt, aber das passiert in der Regel
viel seltener!
FILES=6
BUFFERS=10
DEVICE=C:\ANSI.SYS Die versteckte Datei des PoFo
So manchmal, wenn ich eine Memorycard
Obwohl der DEVICE-Befehl nicht im PoFo-
(MMC) oder die Ramdisk mit dem Befehl
Handbuch erwhnt ist, so ist er doch ein
CHKDSK prfe, wird auch von einer
erlaubter Befehl und war nicht die Ursache
versteckten Datei berichtet, die aber ohne
fr die Fehlermeldung. An den Befehlen
Inhalt ist. Weder mit dem PoFo, noch mit
FILES und BUFFERS kann es auch nicht
dem PC, konnte ich bislang diese ominse
gelegen haben und andere, unbekannte,
Datei sichtbar machen oder deren Namen
Befehle enthlt diese CONFIG.SYS ja nicht.
erfahren.
Weil ich mir den Fehler partout nicht erklren
Als ich neulich in der Buchhandlung
konnte, setzte ich nun die Werte fr FILES
mehrere neue DOS-Bcher nach Anregungen
und BUFFERS auf die vom PoFo-Handbuch
fr Batchdateien durchbltterte, stie ich auf
empfohlene Werte, bevor ich die genderte
die Herkunft dieser versteckten Datei:
CONFIG.SYS abspeicherte und einen
Wird beim formatieren oder nachtrglich
erneuten Reset ausfhrte.
mit dem Befehl LABEL ein Datentrger auf
Diesmal blieb ich von der Fehlermeldung
einen Namen getauft, so wird dieser als eine
verschont, was mich natrlich stutzig
Art Datei auf dem Datentrger abgelegt.
Diese Datei ist allerdings ohne Inhalt und copy %1\*.* %2 > nul
kann nicht sichtbar gemacht werden. goto off
:err
Flugs zckte ich meinen PoFo und probierte
echo Ziellaufwerk oder -verzeichnis
dieses gleich aus, indem ich mit der bloen echo fehlt!
Eingabe von LABEL und zweimaligem drcken :off
der Return-Taste, gefolgt vom besttigen per
J, die Bezeichnung meiner Ramdisk lschte. Und so funktioniert das ganze:
Und siehe da, beim nchsten Report von Weil der zweite Parameter entweder ein
CHKDSK war keine versteckte Datei gemeldet Laufwerk oder ein Verzeichnis sein kann, mu
worden! Kaum hatte ich die Bezeichnung mit zunchst durch die IF-Zeilen geprft werden,
LABEL RAMDISK wiederhergestellt, tauchte ob ein Laufwerk als Ziel angegeben wurde.
die versteckte Datei wieder im Statusbericht Ist dies zutreffend, so wird die Routine LW
von CHKDSK auf. ausgefhrt. Anderenfalls handelt es sich um
Dieses Spielchen bleibt brigens nicht nur ein Verzeichnis, so da die Routine VZ
auf dem PoFo beschrnkt, sondern ist auch ausgefhrt wird.
unter vielen DOS-Versionen wiederholbar! Da beide fast nach demselben Prinzip
arbeiten, werde ich hier die Routine LW
Verzeichnis kopieren erlutern:
Auf dem Laufwerk, welches als Parameter 2
Auch das kopieren eines Verzeichnisses wird angegeben wurde, wird durch MD %2%1 >
nicht vom DOS vereinfacht, sondern verlangt NUL ein gleichnamiges Verzeichnis erstellt,
viel Handarbeit. Ich habe mir das wieder mit sofern es noch nicht existiert. Mit COPY
einer Batchdatei erleichtert, die ich Euch hier %1\*.* %2%1 > NUL werden dann alle
vorstellen will. Dateien aus dem Quellverzeichnis ins
Mit COPYDIR.BAT kann ich eine Kopie eines gleichnamige Verzeichnis des gewnschten
Verzeichnisses erstellen, die auf Wunsch in Laufwerkes kopiert.
einem anderen Laufwerk oder einem Bei der Routine VZ, und dies ist der
Verzeichnis, angefertigt wird. eigentliche Unterschied, wird der Parameter 2
Will ich z.B. das Verzeichnis C:\SYSTEM auf als Verzeichnis definiert und somit alle
das Laufwerk A: kopieren, so lautet die Dateien des Quellverzeichnisses ins neu
Syntax COPYDIR \SYSTEM A:. Soll das geschaffene Verzeichnis kopiert.
Verzeichnis C:\SYSTEM dagegen nur unter Sollte das zu kopierende Verzeichnis noch
dem Namen C:\DOS dupliziert werden, so weitere Verzeichnisse enthalten, so bleiben
gebe ich COPYDIR \SYSTEM \DOS ein. diese unbercksichtigt. Aber durch
Voraussetzung ist in beiden Fllen, das man entsprechende Eingaben und mehrfach
tatschlich gerade auf dem Laufwerk C: Aufrufe, sind auch diese kopierbar.
arbeitet, dieses also als aktiv angemeldet ist.
Notfalls mu man durch die Eingabe von C:
das Laufwerk aktivieren. Nun mach aber mal einen Punkt!
Hier die besagte Batchdatei COPYDIR.BAT: Ein Fehler im DOS des PoFo erlaubt die
Konstruktion einer Batchdatei namens .
@echo off .BAT. Dazu erstellt man die Batchdatei
if %2==a: goto lw
PUNKT.BAT und benennt sie mit dem Befehl
if %2==b: goto lw
if %2==c: goto lw -REN PUNKT.BAT .BAT- in . .BAT um.
if %2==A: goto lw Diese Batchdatei ist insofern interessant,
if %2==B: goto lw weil sie durch Dutzende von einzelnen ASCII-
if %2==C: goto lw Zeichen aufgerufen werden kann:
if %2.==. goto err
goto vz . , ; + [ ] / =, durch die ASCII-Zeichen 0-2, 4-7, 10-12, 14-
:lw 18, 20-26, 28-31 und alle ab 127 aufwrts
md %2%1 > nul
copy %1\*.* %2%1 > nul
In der Regel gibt man diese einzelnen
goto off Zeichen nicht als Aufruf ein, da meist keine
:vz Programme solchen Namens existieren. Aber
md %2 > nul wenn man diese Batchdatei mit entsprech-
if %2.==. goto 0
cls
Viele Dateien - ein Datum
copy 1.txt con > nul Auch das Datum in den Directoryeintrgen
:1 kann ein Kriterium zur Unterscheidung sein.
set z=0 Deshalb mchte man desfteren das
if %2.==. goto 0
cls
Dateidatum auf einen gewissen Tag
copy 0.txt con > nul festlegen. Weil bisher bekannte Lsungen
:0 nicht auf dem PoFo funktionierten, habe ich
if %2.==. echo %z% eine Lsung mit DDA.BAT herbeigefhrt:
Wird beim Aufruf von DV.BAT eine Variable erledigt ist, rufen wir DVV2.BAT auf, damit
als Parameter %1 mitbergeben, so wird wir wieder in unser Verzeichnis
diese durch die Zeile -SET %1= - gelscht. \TEXT\PRIVAT\FREUNDE gelangen:
Anschlieend erhlt man noch eine @echo off
Besttigung. Alle anderen Zeilen entsprechen cd \TEXT\PRIVAT\FREUNDE
nur einer gewissen Kosmetik und knnten dvv off
weggelassen werden, sofern man diese
Routine nicht auf dem PoFo einsetzt. Sobald wir also im ursprnglichen Verzeichnis
stehen, sorgt DVV.BAT fr die
Aufrumarbeiten und entlt uns dem
bergeordnetes Verzeichnis Prompt.
lschen
Es soll ja mit dem Befehl -DEL ..-
funktionieren, was ich selbst noch nicht
ausprobiert habe, aber meiner Erfahrung
nach geht es nicht auf dem PoFo!So schuf ich
mir die DVV.BAT, die dieses Manko
beseitigt:
@echo off
rem bergeordnetes Verzeichnis lschen
if %1==off goto %1
copy c:\batch\dvv2.dat c:\batch\*.b*>nul
cd>>c:\batch\dvv2.bat
echo dvv off>>c:\batch\dvv2.bat
cd ..
for %%a in (*.*) do del %%a
c:\batch\dvv2
:off
del c:\batch\dvv2.bat
echo Das bergeordnete Vezeichnis wurde
echo komplett gelscht!
Behilflich ist dabei auch DVV2.DAT:
@echo off
cd
Vermeidung von endlosen Generell ist man sich seiner Sache schon
sicher und gibt das J ein. Wozu dann also
Eingaben diese nervige Rckfrage?
Windows ist nicht nur wegen seiner Gute Programmierer unterbinden deshalb
hbschen, bunten Bildchen beliebt, sondern diese Rckfrage, indem sie das J in die Datei
weil man dort kaum die Tastatur bentigt. Als J.DAT schreiben und den Lschbefehl mit
DOS-Fanatiker und Maushasser braucht man folgender Syntax anwenden: DEL *.* <
aber auch nicht auf Bequemlichkeit J.DAT > NUL
verzichten, sofern man sich Zeit nimmt und Damit werden die Abfrage und die
gewisse berlegungen anstellt. entsprechenden DOS-Kommentare komplett
Ich habe mir bereits einige Gedanken dazu unterbunden. Ziel erreicht, so knnte man
gemacht und mchte Euch diese hier einmal jetzt meinen, bersieht aber die Hilfsdatei,
prsentieren! die ja, je nach Rechner und Datentrger, so
Angeregt wurde ich dazu von Jens Sewitz, zwischen 64 und 2048 Bytes verbraucht,
der mir bei einem Treffen seine Batchdateien auch wenn sie nur drei Bytes gro ist.
DP.BAT und DW.BAT prsentierte. Jens war Dieser Verschwendung kann man
es nmlich leid immer DIR /W oder DIR /P zu entgegenwirken, wenn man jede Datei
schreiben, weshalb er diese Befehle durch die einzelnd lscht: DEL BEISPIEL.PRG. Nebenbei
o.g. Batchdateien ersetzte, damit er in wird auch keine Sicherheitsabfrage
Zukunft z.B. mit DP das Inhaltsverzeichnis stattfinden, weil DOS es nicht fr ntig hlt.
seitenweise angezeigt bekommt. Er, wie ich Auf diese Weise eine ganze Reihe von
nun auch, mssen nun nur noch DP eingeben Dateien zu lschen, ist wahrlich sehr
anstelle des lngeren Befehls DIR /P. Zum umstndlich und kann nicht automatisiert
besseren Verstndnis hier einmal die werden.
Batchdatei DP.BAT: Verwendet man aber eine FOR-Schleife
@echo off dazu, so kann man alle gewnschten Dateien
dir /p in einem Verzeichnis lschen, ohne eine
Hilfsdatei zu benutzen und die Rckfrage von
Erstellt man hnliche Batchdateien fr die DOS vermeiden. Ich nenne die dazu
Befehle COPY, REN, DEL, MD, RD, CD, DATE, notwendige Batchdatei FASTDEL.BAT, die wie
TIME, VER usw., so kann man mit der Zeit folgt geschrieben werden mu:
sehr schreibfaul werden ohne das das DOS
nur noch Bahnhof-Bratkartoffeln versteht. Im @echo off
for %%a in (*.*) del %%a
Endeffekt tippt man letztendlich nur noch
unverstndliche Kurzbefehle ein, zumindest Die Liste (*.*) definiert %%a bei jedem
dem Zuschauer erscheint es so, aber das Durchlauf als eine andere Datei, aus der
DOS spielt da problemlos mit. Menge der vorhandenen Dateien (*.*) und
Oder wie wre es, wenn man alle Befehle in lscht explizit nur die in %%a gespeicherte
Batchdateien packt, die die Namen von Datei. Weil eben bei jedem Durchlauf, der
Verwandten trgen ??? Auch die Eingabe von automatisch vom DOS so oft wiederholt wird,
Theo liebt Gaby, mit der die Datei LIEBT. wie noch Dateien vorhanden sind, nur eine
in GABY. umbenannt wird (REN-Befehl Datei gelscht wird, entfllt die Rckfrage.
steht in THEO.BAT), wrde bei jedem Somit ist auch keine Hilfsdatei J.DAT mehr
zuschauenden DOS-User Verwirrung stiften!!! notwendig, was wiederum Speicherplatz
spart.
FASTDEL.BAT - lschen ohne Aufgerufen wird FASTDEL.BAT nur durch die
Rckfrage Eingabe von FASTDEL, wenn man sich in dem
Verzeichnis befindet, in welchem die Dateien
Will man alle Dateien in einem Verzeichnis gelscht werden sollen.
lschen, mit DEL *.*, so fragt DOS zur
Sicherheit noch einmal nach: Sind Sie sicher
(J/N)?
Gestartet wird diese Batchdatei mit z.B. berrascht von diesen einfachen Beispielen?
FASTPRNT *.TXT. Sollte die Dateigruppe Mit mehr Phantasie kann man glatt Portraits
fehlen, sie wird ja wieder als Parameter %1 oder kleine Zeichnungen herstellen!
bergeben, erhlt man eine Rckmeldung. Das ganze Geheimnis beruht auf den
Ansonsten wird zunchst mit ECHO > PRN Grafikzeichen des Zeichensatzes, die man mit
eine Leerzeile auf dem Drucker erzeugt. der <Alt>-Taste erzeugt. So ist der
Hinter dem ECHO stehen aber keine zwei Directoryeintrag Kastenoberteil durch
Leerzeichen, sondern ein Leerzeichen und der folgende Tastaturakrobatik, auf dem
Charakter 255. Portfolio, entstanden:
Wrde ich letzteren weglassen, den ich mit
der ALT-Taste erzeugte, so wrde statt einer <M>, <D>, <Leer>, <Fn>+<N>,
<Alt>+<K>+<M>+<J>, <Alt>+<K>+<M>+<I> (noch
Leerzeile der Text ECHO ist off gedruckt. Die fnf mal wiederholen), <Alt>+<J>+<8>+<7>,
erste FOR-Schleife druckt dann alle <Fn>+<N>, <+
gefundenen Dateinamen aus, bevor die
zweite Schleife die eigentlichen Dateien Zum Verstndnis: Jeder Text in spitzen
ausdruckt. Klammern soll eine Taste sein. Ein plus
Den Dateinamen vor dem Dateiinhalt bedeutet, da die erste Taste festgehalten
auszudrucken wre auch mir lieber gewesen, werden mu und die anderen bei gehaltener
aber ich habe dies bisher noch nicht weiter Taste gedrckt werden sollen. Die Kommatas
versucht. Gewhnt man es sich an, am Ende weisen nur darauf hin, das jetzt eine neue
eines jeden Textes eine Leerzeile zu Sequenz kommt und <+ steht fr die Enter-
erzeugen, so ist auch eine saubere Trennung Taste.
zwischen den gedruckten Texten zu sehen. Gro-PC-Besitzer schalten bitte NumLock
ein und tippen die Zahlenwerte ber
Fiese Verzeichnisse denZehnerblock ein:
... bieten zwar auch keinen absoluten Schutz, <M>, <D>, <Leer>,
verwehren aber unerfahrenen Bedienern die <Alt>+<2>+<0>+<1>,
Einsicht.
2. Ausfhrbare Maschinenspacheprogramme
unter DOS schreiben:
ECHO %c4%1%c27%L8% > TEST.COM
Die drei path-Zeilen dienen uns dabei nur als Ein zweiter Test, diesmal mit
Kontrolle und sollten spter gelscht werden. RAMDRIVE.SYS aus MS-DOS 6.22, ergab eine
Schauen wir uns aber die anderen Zeilen an, maximale Gre der ersten Ramdisk mit
die das ganze Geheimnis bargen: 24KB. Haben Eure PoFos aber mehr Speicher
Weil die Pfadangabe spter wieder in den als 128KB, so knnt Ihr den Wert 64, in
Ursprungszustand zurckversetzt werden obiger Zeile, auch gerne Schritt fr Schritt
soll, mu sie mit SET OPATH=%PATH% in um 64 erhhen: 128,192,256,...
die Variable OPATH gerettet werden. Nun Die Verwendung der zweiten Ramdisk ist
wird die Pfadangabe mit SET aber nicht ganz risikolos: Sobald der PoFo
PATH=%path%;C:\NEU um das Verzeichnis neugestartet wird, egal ob Warm- oder
C:\NEU verlngert. Anstelle der REM-Zeilen Kaltstart, geht die zweite Ramdisk und mit
fgen Sie also Ihre gewnschten Routinen Ihr alle Daten, verloren. Die Ramdisk C:
ein. Sind diese abgearbeitet, wird die alte verliert Ihre Daten zumindest bei einem
Pfadangabe durch SET PATH=%OPATH% Warmstart (STRG+ALT+EINF/ENTF) nicht!
wiederhergestellt. Ist auch dies erledigt, so Die Gre der Ramdisk C: verndert man ja
kann die Variable OPATH gelscht werden, bekanntlich mit dem Befehl FDISK: FDISK 32
was durch SET OPATH= geschieht. und FDISK 24 sind fr diese Tests die
Soll die Pfadangabe dauerhaft verlngert richtigen und vollstndigen Befehle. Dringend
werden, so mu die Zeile SET dabei zu beachten ist aber, da man alle
PATH=%PATH%;C:\ durch die folgende Daten und Programme auf C: verliert, wenn
Batchdatei an die AUTOEXEC.BAT gehngt man den FDISK Befehl startet!
werden:
Wozu soll eine zweite Ramdisk gut sein?
@echo off
echo set path=%path%;c:\neu >> autoexec.bat Man kann z.B. die Dateiprobleme des PoFo
auch dann in den Griff bekommen, wenn man
Damit htten wir also auch wieder ein keine Speicherkarte besitzt. Oder man legt
Problem weniger, obwohl dieses noch von die Daten auf D: ab, die nur sehr kurzfristig
sehr leichter Natur war - zumindest fr mich. bentigt werden und deren Verlust man leicht
verkraften kann. Auch eine bessere und
Eine zweite Ramdisk namens D: geordneter Dateiablage kann man mit der
Voller berraschung stellte ich neulich fest, Verwendung der zweiten Ramdisk erreichen.
das der Blockgertetreiber RAMDRIVE.SYS Diese Erfahrungen beruhen auf PoFos mit
aus diversen MS-DOS Versionen, auch auf den Bios Versionen 1.072 und 1.130.
dem PoFo funktioniert.
Mit diesem Treiber kann man nun also eine
zweite Ramdisk auf dem PoFo einrichten, die
dann den Namen D: erhlt. Dazu mu die
folgende Zeile in die Datei CONFIG.SYS
aufgenommen werden:
DEVICE=RAMDRIVE.SYS 64
SB1.BAT:
@echo off
echo Slavebatch eins
set rek=1
%1
SB2.BAT:
@echo off
echo Slavebatch zwei
set rek=2
%1
@echo off
set %1=%test%
set test=
echo Variable test in new umbenannt!
rv off
%0 mit dem folgenden Inhalt gefttert: Nun ist der PoFo auch sonst ein sehr
A:\AUTOEXEC. Vorausgesetzt, die eigenwilliger Compi, weshalb der Inhalt des
AUTOEXEC.BAT befindet sich im A:-Laufwerk Parameters %0, nmlich A:\AUTOEXEC,
- und das setze ich hier einmal voraus! nicht dem Inhalt desgleichen Parameters, auf
Festhalten wollen wir also nur die groen PCs, gleichen mu!!!
Zeichenfolge A: und das mglichst zur Mit der folgenden AUTOEXEC.BAT kann man
weiteren Nutzung in einer Variablen. Alle aber den Inhalt von %0 berprfen:
Versuche, das berflssige Wort AUTOEXEC
abzuschneiden, waren zum Scheitern @echo off
echo %0 %1 %2 %3
verurteilt. Weil aber der Inhalt des
Parameters %0 bekannt ist, konnte ich Sollte also das Ergebnis anders ausfallen, so
diesen mit allen Variationsmglichkeiten ist die obige Batchdatei entsprechend
vergleichen und bei passendem Vergleich, die abzundern.
Variable LW, die ich zur Aufnahme
auserkoren hatte, dementsprechend selbst
mit dem Laufwerksnamen definieren! Die Eine unlschbare Variable simu-
folgende AUTOEXEC.BAT erledigt das nun fr
mich:
lieren!
Das geht nur direkt am DOS-Prompt indem
@echo off man eingibt:
set lw=%0
if %lw%==A:\AUTOEXEC goto a SET VAR=^Z
if %lw%==B:\AUTOEXEC goto b Wobei ^Z fr die Tastenkombination STRG+Z
if %lw%==C:\AUTOEXEC goto c
goto fehler
steht!
:a Im Gegensatz zu den echt unlschbaren
set lw=A: Variablen, die auftreten wenn das
goto message Environment voll ist, kann diese Variable
:b wieder durch die Eingabe von:
set lw=B:
goto message SET VAR=
:c gelscht werden. Sie kann aber auch durch
set lw=C:
eine Batchdatei gelscht werden! Eine
:message
echo Das Startlaufwerk ist %lw%! vermeintliche Leerzeile im Environment
goto ende erreicht man durch diese Direkteingabe:
:fehler
echo Das Startlaufwerk ist zumindest nicht SET ^Z=^Z
echo A:, B: oder C:! Nheres konnte leider Auch diese Leerzeile ist eine vermeintlich
echo nicht ermittelt werden, sorry!!! unlschbare Variable! Diese kann nur durch
:ende die Direkteingabe von:
Diese Routine funktioniert wirklich nur SET ^Z=
unmittelbar nach dem Einschalten des gelscht werden. Eine Batchdatei kann diese
Rechners, oder nach einem Reset. Wird sie Variable nicht lschen!
nach lngerer Computerbenutzung nochmals
aufgerufen, so geht damit der Inhalt der
Variablen LW unwiederbringlich verloren!
Mit der folgenden Befehlszeile kopiere ich
alle Dateien vom Ur-Startlaufwerk nach C:,
wenn ich sie in einer Batchdatei einsetze:
copy %lw%*.* c:\
Larrylob sind wir, verehrte Leser, nicht so 2.3 Erscheint die Fehlermeldung Datei nicht
larry drauf, weshalb UNCOPY.BAT nur sehr gefunden, so drcken Sie zweimal die ESC-
selten bei uns zum Einsatz kommt, oder??? Taste (ganz links oben) und drcken dann die
N-Taste.
UPDATE.COM & PORTDIV.COM 2.4 Gehen Sie mit dem Cursor zum Anfang
der Datei und fgen Sie dort die folgenden
Weil mich mindestens einmal pro Monat ein drei Zeilen vor:
Hilferuf zu diesen Dateien erreicht, mchte
ich mit diesem Text, der frei kopiert und @echo off
weitergegeben werden darf, die Verwendung update
portdiv
und die Installation dieser Programme
erklren. Allerdings sind gewisse 2.5 Ist die AUTOEXEC.BAT nicht vorhanden,
Vorkenntnisse bers DOS und die so geben Sie bitte die folgenden Zeilen ein:
Textverarbeitung des PoFos vonnten, denn
@echo off
alle mglichen Varianten sind mir nicht update
bekannt und von Fall zu Fall verschieden. portdiv
Diese Anleitung beschreibt den generellen prompt$p$g
Fall. path=c:\;c:\system
Wer also nicht wei, was Hauptverzeichnis,
Unterverzeichnis, AUTOEXEC.BAT und 2.6 Speichern Sie die AUTOEXEC.BAT wie
CONFIG.SYS sind, der sollte sich schleunigst folgt ab: Atari-Taste, D-Taste, S-Taste,
ein Buch zu MS-DOS kaufen, indem auch die folgenden Text eingeben: C:\AUTOEXEC.BAT
im PoFo vorhandenen Befehle stehen und und die Winkelpfeil-Taste drcken
erklren, wie man Dateien ablegt, ordnet und 2.7 Verlassen Sie die Textverarbeitung mit
verndert. einmaligem Druck auf die ESC-Taste.
3. Start der Programme:
1. bertragen dieser Programme auf die 3.1 Fhren Sie einen Warmstart aus, indem
Ramdisk C: Sie die Tasten STRG, ALT und EINF/ENTF
1.1 von der Memorycard im Kartenschacht A: zugleich drcken.
des PoFo mit:
COPY A:UPDATE.COM C:\ - Alle Angaben ohne Gewhr -
COPY A:PORTDIV.COM C:\
1.2 vom PC via Serialinterface: Wo bin Ich?
1.2.1 Eingabe am PoFo:
COPY AUX C:\UPADATE.COM Ob sich das DOS an diesem beliebten
1.2.2 Eingabe am PC : deutschen Ratespiel beteiligt, ist leider nicht
COPY UPDATE.COM AUX berliefert. Anscheinend hat es die
1.2.3 Eingabe am PoFo: Laufwerksverwaltung so gut im Griff, das
COPY AUX C:\PORTDIV.COM diese Frage nicht aufkommen kann. Fr
1.2.4 Eingabe am PC : automatische Ablufe kann es aber sehr
COPY PORTDIV.COM AUX hilfreich sein zu wissen, welches Laufwerk
Andere bertragungsarten sind auch mglich, gerade aktuell ist. Dem soll meine Batchdatei
habe ich aber noch nicht ausprobiert. WOBINICH.BAT Rechnung tragen:
:.
del c:\batch\wbi*.bat>nul Sie setzt die Variable ALW und definiert sie
mit dem Laufwerksnamen und dem
WBI2.DAT: Backslash, der die Kennzeichnung fr das
cd
Hauptverzeichnis ist. Eigentlich mte dieser
WBI3.DAT: Backslash noch weg, da wir nur die
@echo off Laufwerkskennnung C: suchten, aber die
set alw= Routine wre dadurch noch
unverhltnismig lnger geworden. Nun
Besprechen wir zunchst die Gedanken, die bekommt Ihr die Rckmeldung auf den
dieser Routine vorausgegangen sind: Schirm und es folgt der Rckwechsel ins
Weder Laufwerk, noch Verzeichnis, sind Verzeichnis SYSTEM, von wo die ganze
beim Start bekannt. Helfen kann da nur der Routine gestartet wurde. Mit dem erneuten
Befehl -CD-, dessen Reaktion in Dateien Start von WOBINICH.BAT, sorgt
umgeleitet wird. Unter alten DOS-Versionen WBI3.BAT fr die Wiederherstellung der
ist ja keine Trennung zwischen der vorherigen Ordnung. Die Variable ALW wird
Laufwerkskennung und dem allerdings nicht gelscht, damit andere
Verzeichnisnamen mglich, weshalb ein Routinen auf sie zurckgreifen knnen!
wechsel in ein bekanntes Verzeichnis
stattfinden mu. Bestens geeignet ist dafr
KnowHow: DIP-OS
das Hauptverzeichnis, da es erstens auf
jedem Datentrger vorhanden ist und Auch Kleines wird einmal Gro
zweitens, einen markanten Namen besitzt, Mit der folgenden Routine kann man
der leicht verglichen werden kann. Bevor Parameter in Groschrift umwandeln. Somit
aber dieser Wechsel ausgefhrt wird, sollte kann man viele berprfungszeilen
noch das aktuelle Verzeichnis gerettet vermeiden, oder Worte besonders
werden, damit es spter wieder aktualisiert hervorheben. Doch leider funktioniert die
wird. Technik nur auf dem PoFo:
Soweit die Vorgeschichte, jetzt geht es an
des Routinens Kern: set =hallo
Beim ersten Start d.h., wenn Ihr echo %%
WOBINICH.BAT durch die Eingabe
Werden diese Zeilen in eine Batchdatei
WOBINICH aufruft, werden als erstes die
gepackt, so wird nach dem Aufruf
Hilfsdateien kopiert. Es folgt die Sicherung
derselbigen, das Wort hallo in
des aktuellen Verzeichnisnamens in die Datei
Grobuchstaben auf dem LCD-Schirm
WBI2.BAT, der Wechsel ins
erscheinen. Definiert man nmlich eine
Hauptverzeichnis und die Sicherung des
Variable, in deren Name ein ASCII-Charakter
Hauptverzeichnisnamens in WBI3.BAT.
oberhalb von 126 steckt, so wird der Inhalt
Jetzt wird die Rckmeldung in WBI3.BAT
automatisch vom PoFo in Groschrift
plaziert, bevor sie durch WBI2.BAT, mittels
umgewandelt. Weil lange Variablennamen nur
-TYPE- Befehl, verlngert wird. Die
Speicherplatz verschwenden und das
WBI2.BAT enthlt ja den Verzeichnisnamen,
direkt neben dem = auf der Tastatur
der beim Start von WOBINICH.BAT aktuell
liegt, habe ich mir diesen Variablennamen
war. Per -ECHO- wird nun der Befehl zum
ausgesucht. rger, Mll, l, bel oder alle
Rcksprung -WOBINICH .-, der WBI3.BAT
Konstruktionen aus Grafikzeichen vermgen
mitgeteilt, bevor sie dann gestartet wird.
dasselbe zu leisten.
Angenommen, mein PoFo steckt gerade in
Diese Erfahrung brachte mich auf die Idee,
dem Verzeichnis SYSTEM des Laufwerkes C:,
eine Batchdatei zu schreiben, mit der
dann she die WBI3.BAT schlielich so aus:
bestehende Variablen in Groschrift
@echo off umgewandelt werden knnen. Und weil mir
set alw=c:\ das ganze so gut von der Hand ging, kann
echo Das Laufwerk %alw% ist aktuell! man damit auch noch nicht existierende
cd c:\system Variablen gleich in Groschrift definieren.
wobinich .
Obwohl wir bei diesem zweiten Testlauf Diese Version formatiert die Ramdisk nicht
GV2.BAT nicht angelegt hatten, war ja nicht mehr automatisch, weil man den PoFo ja auf
notwendig, wird diese Datei versucht zu drei verschiedene Sprachen
lschen. Dank der Umleitung nach NUL (Englisch/Francais/Deutsch) einstellen kann
bekommen wir aber keine Fehlermeldung und dieses zu Problemen fhrt:
mitgeteilt. Bei der alten Version bin ich von auf
Natrlich kann man die Variable AUTO auch Deutsch eingestellten PoFos ausgegangen
im Direktmodus mit NEIN definieren wenn und habe die automatische Formatierung
man -SET AUTO=NEIN- eingibt. Dieser Weg durch:
ist zwar einfacher, aber bei automatisch FDISK 8 < j.dat > nul
ablaufenden Batchdateien ist meist keine
userbedingte Eingabe mglich oder gar uner- erreicht. Bei auf Deutsch eingestellten
wnscht. Deshalb hat die zweite Mglichkeit Gerten gibt es damit auch keine Probleme,
der Umwandlung auch Sinn! aber bei denen, die auf Englisch oder
Franzsisch eingestellt sind!
GW-Basic auf dem PoFo - Teil 3 Denn dort mu man die Rckfrage vom
DIP-OS mit der Taste Y fr YES oder O fr
Ich habe mich noch einmal hingesetzt und die
OUI beantworten!!! Und somit kann die nicht-
Startroutine zum GW-Basic berarbeitet, weil
deutsche-Rckfrage nichts mit der Taste J
meine alte Version, aus dem Jahre 12 nach
anfangen, die ich in die Datei J.DAT, zwecks
DOS (1993), nicht mehr zeitgem und viel
Umleitung an FDISK, gestellt habe!
zu umstndlich ist!
Meine Versuche alle mglichen und
Herausgekommen ist eine neue
erlaubten Tasten (YOJ) in YOJ.DAT zu stellen,
AUTOEXEC.BAT, die ins Hauptverzeichnis
quittierte der PoFo durch totale
einer 128KB Memorycard gehrt:
Arbeitsverweigerung!
@echo off Wer es probieren mchte, sollte so
if not exist a:\gwbasic.exe goto err
if not exist c:\system\*.* goto next YOJ.DAT mit der Textverarbeitung schreiben:
if exist c:\system\@!@-@!@.gwi goto next Y
O
cls
J
echo ++
echo !ATTENTION! ATTENZIONE! ACHTUNG!
echo ++ und dann den Befehl: FDISK 8 < YOJ.DAT im
echo DIP-OS (DOS) eingeben.
echo Try formatting C: with 200K! Zu gerne htte ich dieses Problem aus der
fdisk 200 Welt geschafft und EINE Lsung fr alle
echo Try formatting C: with 8K! Sprachen geschaffen, aber der PoFo spielt da
fdisk 8
:next
(noch) nicht mit!
md c:\system>nul Und was lernen wir daraus:
rem>c:\system\@!@-@!@.gwi Wenn wir Batchdateien schreiben, die
prompt $p$g Tastendrcke aus Dateien bentigen, so
path=a:\;c:\ mssen wir daran denken, das es nicht nur
a:\portdiv>nul die deutsche Sprache gibt!!!
cls
echo ++
Aber allem Anschein nach sind die
echo GW-BASIC 3.22 - Startroutine CompuServe-User echte Freaks und haben
echo developed 1996 by Lasse Assebasse meine alte Lsung, ohne zu murren!, Ihren
echo ++ Sprachen gem verndert. Ich hoffe nur,
a:\gwbasic das Ihr nicht so tolerant seit, weil solche
:err Fehler nicht gerade jahrelang unentdeckt
if not exist a:\gwbasic.exe echo File GWBASIC.EXE is
missing!
bleiben sollten!!!
Noch ein paar Worte zur Programmtechnik:
Ersatzlos gelscht werden knnen die Dateien Wie allseits bekannt sein drfte, formatiert
AUTO2.BAT, AUTO3.BAT, AUTO4.BAT, man mit dem Befehl FDISK die Ramdisk C:
AUTOEXEC.ORI und J.DAT. des PoFo. Weil dadurch ALLE Dateien auf C:
verloren gehen, auch CONFIG.SYS und
Weil viele Antwortmglichkeiten auch prompt=Bist Du mit mir, dem Computer, zufrieden (J/N) ?
dementsprechend viele Batchdateien zur
Auswertung verlangen, sollte man die Fragen Und so sieht dann beispielsweise die Antwort-
mglichst so gestalten, das mit J fr JA oder Batchdatei J.BAT aus:
N fr NEIN geantwortet werden kann. Es @echo off
werden dann also nur die Batchdateien J.BAT if %frg%==1 goto eins
und N.BAT bentigt. if %frg%==2 goto zwei
Gesetzt der Fall, es sollen mehrere Fragen goto end
vom Bediener per J/N beantwortet werden, :eins
echo Du solltest besser im Garten arbeiten!
so knnen J.BAT und N.BAT die Antworten
goto end
fehlinterpretieren, da sie ursprnglich nur fr :zwei
eine Frage konzipiert wurden. Man stelle sich echo Vielen Dank, das ehrt mich sehr!
einmal vor, da der Computer fragt, ob wir :end
heute schnes Wetter htten. Durch die prompt=%prz%
Antwort mit J erhielten wir dann den
Kommentar vom Computer, da man doch Durch die IF-Zeilen wird die Variable FRG
besser im Garten arbeiten solle, als auf ihm, berprft und zu der Routine weitergeleitet,
den Computer, rumzuhacken. Im nchsten die dann den richtigen Kommentar ausgibt.
Moment soll dann die Frage, ob wir mit dem Bei entsprechender Weiterprogrammierung
Computer zufrieden sind, beantwortet kann man damit aus seinem Computer glatt
werden. Die meisten von uns werden auch den privaten Psychiater oder Lebensberater
diese Frage mit J beantworten und machen!!!
bekommen erneut den Kommentar geliefert, Echten Sinn macht diese Frage-Antwort-
da man doch besser im Garten arbeiten Technik aber erst in Installationsroutinen
solle. Eine Reaktion wie Vielen Dank, das oder Mensystemen. Die hier vorgestellte
ehrt mich sehr! wre hier nicht nur passen- Technik ist ausfhrlich auf dem Atari Portfolio
der, sondern auch logischer. getestet worden und kann sich natrlich
Aber auch diese Unlogik ist mit ein paar durch neuere DOS-Versionen erbrigen.
Zeilen behebbar! So definiert man in jeder
Frage-Batchdatei eine Variable und baut in Die automatische Sicherung des
J.BAT und N.BAT entsprechende Prfroutinen Environments
ein, mit denen dann die richtigen
Kommentare geliefert werden. Die definierte Ein volles Environment, zu altdeutsch:
Variable sollte immer denselben Namen Umgebungsspeicher, macht sich ja immer
haben und nur von jeder Frage- Batchdatei durch die Meldung Umgebungsspeicher voll!
mit neuem Inhalt definiert werden. Nennen bemerkbar und ist sehr rgerlich, weil keine
wir diese Variable FRG fr Frage und geben Variablen mehr gesetzt werden knnen.
wir ihr den Inhalt 1, wenn die Frage nach Startet man nach dieser Meldung noch
dem Wetter beantwortet werden soll. Die weitere Batchdateien, die Variablen anlegen
Frage-Batchdatei, die ich WETTER.BAT wollen, so werden diese Batchdateien nicht
nennen mchte, she dann so aus: mehr korrekt funktionieren und womglich
wichtige Dateien lschen. Also heit es
@echo off entweder Variablen von Hand lschen oder
set frg=1 DELENV.BAT einsetzen, damit der Ablauf von
set prz=%prompt% Batchdateien nicht gefhrdet ist. Doch was
prompt=Ist heute schnes Wetter (J/N) ?
ist, wenn man Variablen lscht, die spter
Die Frage-Batchdatei nach der Zufriedenheit, wieder bentigt werden? Um spter nicht wie
ich nenne sie hier COMPUTER.BAT, definiert der Ochs vorm Berg zu stehen, sollte man
die Variable FRG mit 2 und sieht dann etwa vor dem lschen der Variablen diese lieber
wie folgt aus: sichern, damit sie spter wiederhergestellt
werden knnen. Einen automatisierten
@echo off Lsungsansatz dafr stellt SAVENV.BAT dar:
set frg=2
set prz=%prompt%
man diesen Inhalt mit dem noch aktuellen 15: if not %1.==PATH. if not %2.==.:..
Environment vergleichen kann. Der SET c:\batch\delenv2.bat
16: if not %1.==.:.. if %2.==.:.. echo Ich konnte die
Befehl wirkt da ja bekanntlich Wunder.
Variable %1 und die ihr folgenden Variablen nicht
Eine halbautomatische Lsung, bei der die lschen!
aus einem Wort bestehenden 17: if not exist c:\batch\delenv2.bat echo Ich konnte den
Variablennamen als Parameter an die Umgebungsspeicher nicht lschen, weil
Batchdatei bergeben werden, ist zwar DELENV2.BAT fehlt!
sicherer, aber leider auch nicht gerade sehr 18: if %1.==.:.. if %2.==.:.. echo Kein lschen mglich, da
DELENV2.DAT nicht oder fehlerhaft erstellt wurde!
komfortabel.
19: if %PATH%==--- echo Die Pfadangabe mu neu
Aber wie gesagt: Dies ist nur ein eingegeben werden!
Lsungsansatz, der in Zukunft weiterverfolgt 20: if %PATH%==--- set path=
und verbessert werden soll! 21: if exist c:\batch\delenv2.bat del c:\batch\delenv2.bat
Sie startet nach dieser Aufnahme bricht sie das Lschen ab. Somit bleiben bei
DELENV.BAT mit den Angaben OS und MS- diesem Beispiel die Variablen PATH, PROMPT,
DOS als ersten und zweiten Parameter neu. COMSPEC und TEMP erhalten.
Zeile elf von DELENV.BAT kommt nun zum Fr mich, bzw. meine Batchdateien, sind die
Zuge und lscht die als Parameter %1 Variablen BDV und BDY ebenfalls sehr
bergebene Variable OS. Zwischenzeitlich wichtig, weshalb ich die folgenden Zeilen
wurde vom nun mehr verkleinerten noch zwischen die Zeilen neun und zehn
Environment ein neues Abbild einfge, um auch BDV und BDY zu behalten:
in die erneut gefertigte DELENV2.BAT
gepackt: set bdv=%BDV%
set bdy=%BDY%
@echo off
c:\batch\delenv.bat VER=6.22 Nach diesem Schema knnen Sie also alle
BDV=C: wichtigen Variablen bewahren, wenn Sie
...usw. diese nach Zeile neun von DELENV.BAT
einfgen! Auf jeden Fall sollte keine Variable
Diese neue DELENV2.BAT startet also wieder vor der Zeile fnf eingefgt werden, weil alle
DELENV.BAT und sorgt damit fr die Variablen, die vor PATH stehen, gelscht
Lschung der Variable VER. Theoretisch werden!
wrde sich dieses rotierende System so lange In bislang nur einem bekannten Fall mu das
fortsetzen, bis keine Variable mehr existiert! Lschen vorzeitig abgebrochen werden, da
Aber dem aufmerksamen Beobachter wird DELENV.BAT die Variable nicht lschen kann.
nicht entgangen sein, das die erste zu Die Rede ist von EV3, die man im oben
lschende Variable eigentlich COMSPEC htte dargestellten Environment entdecken kann.
sein mssen, wenn man das Abbild des Sie ist wie alle Variablen durch den SET
Environments betrachtet, welches eingangs Befehl entstanden, konnte aber nicht korrekt
gezeigt wurde. angelegt werden, weil der
Weil es natrlich nicht sehr klug ist das Umgebungsspeicher whrend der Anlegung
gesamte Environment zu lschen, schlielich voll wurde. Trotz intensivster Bemhungen ist
sind Variablen wie PATH, PROMPT, COMSPEC es mir bislang nicht gelungen, diese Variable
und TEMP fr DOS und uns ntzlich oder gar wieder per SET Befehl zu lschen. Und genau
notwendig, werden diese Variablen vorher deswegen kann sie anscheinend auch nicht
"gesichert". Sie werden durch die Zeilen fnf per Batchdatei gelscht werden: Sie bleibt
bis neun mit Ihrem eigenen Inhalt definiert solange im Environment, bis der Rechner neu
und rutschen dadurch ans Ende des gestartet wird!!!
Umgebungsspeichers: Es spielt keine Rolle wie die Variable bei
Ihnen heit oder wie lang ihr Name ist,
OS=MS-DOS sobald sich eine Variable ohne
VER=6.22
Gleichheitszeichen im Environment befindet,
BDV=C:
BDY=\BATCH\ kann diese nach derzeitigem Kenntnisstand
EV1=123456789012345678901 nicht vom DOS gelscht werden.
EV2=1234567890123456789012 Somit mu das rotierende System von
EV3 DELENV.BAT fehlschlagen, wenn die
PATH=C:\DOS;C:\BATCH;C:\WINDOWS fehlerhafte Variable an die erste Stelle des
PROMPT=$p$g
Environments hochgerckt ist. In Mitleiden-
COMSPEC=C:\COMMAND.COM
TEMP=C:\temp schaft sind all die Variablen gezogen, die sich
dann zwischen der fehlerhaften und der PATH
Weil sie aber selbst dort nicht sicher sind, das Variable befinden. Diese knnen dann auch
rotierende System lscht fast alles, fungiert nicht mehr gelscht werden, weil das
die Variable PATH als Grenze zwischen den zu Environment immer wieder mit der strenden
lschenden und den zu erhaltenen Variablen. Variable beginnt.
Sobald also DELENV.BAT die Variable PATH Immerhin habe ich DELENV.BAT so
als ersten Parameter geliefert bekommt, dressiert, da es dieses Problem erkennt und
die Arbeit dann einstellt. Auch wenn die
Variable PATH, die Datei DELENV2.DAT, die GW-Basic auf dem PoFo!!!
Datei DELENV2.BAT nicht existiert, wird das
bemerkt und entsprechend reagiert. Selbst Nach dem also das GW-BASIC 3.22 auf
einen unsinnigen Start von DELENV.BAT meinem PoFo lief, strte ich mich noch an
durch die Eingabe DELENV .:. .:. verzeiht sie dem Bildschirmformat von 80 Zeichen und 25
grozgig! Zeilen. Der PoFo hat ja nur ein
Selbst wenn eine brandgefhrliche Variable Bildschirmformat von 40 Zeichen und 8
im Environment vorkommen sollte, ich denke Zeilen, weshalb etliche Basicprogramme
da z.B. an FDISK, so wird dieser unbersichtlich wirken.
Variablenname nicht zum Start des Versuchsweise begann ich also das
gleichnamigen Programmes fhren, welches Programm GWBASIC.EXE zu patchen, hrte
ansonsten die gesamte Festplatte formatieren aber alsbald wieder damit auf, weil die Werte
knnte!!!! 80 und 25, die es ja in 40 und 8 abzundern
Weil Kontrolle seit jeher besser als galt, etwa 3000 mal vorkamen. Das war mir
Vertrauen ist, kann man ja dieses Risiko dann doch zuviel Arbeit, so da ich mich
herausfordern und eine Variable namens eines einfacheren Lsungsweges besann und
FORMAT definieren, die als Inhalt mit den der Firma Microsoft mein Problem schilderte.
Werten gesetzt wird, die ansonsten zur Kurz darauf erhielt ich von Microsoft, es war
Formatierung einer 1.44MB Diskette im nicht Bill Gates persnlich, den gewnschten
Laufwerk A: ntig sind: Rckruf: Weil die Entwicklung schon solange
zurck liegt, ist es leider nicht mglich, die
set format=a: /f:1440 gewnschte Arbeit vorzunehmen.
Also blieb es doch wieder an mir haften und
Nun sollte man eine Diskette ins Laufwerk A: ich machte mich an diese langwierige
einlegen, DELENV.BAT starten und abwarten. Prozedur. Mit mehreren Basicprogrammen
Sollte sich aber in Ihrem Environment eine und Batchdateien, die sich gegenseitig
Variable befinden, in deren Name sich ein aufriefen und die Ergebnisse festhielten, ist
Leerzeichen, oder ein hnliches es mir dann doch schon nach einer Stunde
Trennungszeichen, befindet, so wird gelungen, auf einem 386er PC mit 25 MHz
DELENV.BAT diese Variable nicht lschen wohlgemerkt, die Zeilenzahl von 25 auf 8
knnen und das fhrt zu einer Endlosschleife. abzundern. Die Zeichenzahl von 80 mute
D.h. DELENV.BAT wird nicht mehr beendet! ich kurioserweise nicht mehr ndern, da das
Wer DELENV.BAT auch tatschlich in einen GWBASIC 3.22 dann problemlos auf dem
vollautomatisch ablaufenden PoFo funktionierte. Dazu mu der
Batchdateienverbund nutzen mchte, kann Bildschirmmodus MODUS im Systemmen,
dies erreichen, wenn er DELENV.BAT um die auf Normal eingestellt werden. Die
22. Zeile ergnzt. Weil auch ich noch keine Funktionstasten werden dann allerdings nicht
Patentlsung dafr habe, mu sich jeder mehr komplett angezeigt, sondern nur die
Leser selbst so seine Gedanken dazu ersten fnf. Um die restlichen fnf sichtbar zu
machen. machen, mu man den Befehl KEY LIST
verwenden.
Zwar ist die unterste, also die achte Zeile,
nicht im Eingabemodus zu erreichen, aber sie
kann von den Programmen problemlos
mitbenutzt werden. Bevor Ihr nun beginnt
Euer GWBASIC 3.22 mit dem unten stehen-
den Basicprogramm zu patchen, solltet Ihr
sicherheitshalber eine Kopie der Datei
GWBASIC.EXE anfertigen.
Sollte nmlich die gepatchte Version nicht
korrekt auf dem PoFo funktionieren, so habt
Ihr immer noch die Originalversion fr den
PC!!!
User beim Start der Batchdatei mitangeben Damit der PC auch spter noch die
mu. Durch diese Parameter, das knnen Programme wiederfindet, wird der
Zahlen, Zeichen, Wrter oder gar ganze ursprngliche Pfad vorher gesichert und
Stze sein, wird dann der Ablauf der nachher wieder restauriert. Zum Schlu
gestarteten Batchdatei beeinflut. Diese findet man den Parameter %1 komplett in
Parameter auf Richtigkeit zu berprfen, ist Grobuchstaben geschrieben in der Variable
eine nicht leichte Aufgabe fr jede Batch- XYZ und braucht zum prfen nur noch eine
datei, ganz besonders wenn es sich um Abfrage.
Wrter handelt. Bis ich zum ersten Mal die Fehlermeldung
Denn es ist schon ein groer Unterschied, "Umgebungsspeicher voll" vom DOS zu
ob ich das Wort TEST in Grobuchstaben, als Gesicht bekam, konnte ich mich auch auf
test in Kleinbuchstaben oder gemischt als diese Technik verlassen. Weil diese
Test schreibe. Fehlermeldung besagt, da man keine
weiteren Variablen anlegen kann, bevor man
Um dieses Problem der Gro-, nicht einige andere Variablen gelscht hat,
Kleinschreibung und auch der gemischten kann es passieren das die Variablen OLDPATH
Schreibweise zu beheben, behalf ich mir und XYZ nicht oder fehlerhaft angelegt
zuerst mit z.B. folgenden Batchzeilen: werden.
Und wenn das passiert, dann kann die
if %1==test echo Parameter korrekt Pfadangabe auch nicht mehr korrekt
if %1==Test echo Parameter korrekt restauriert werden, was zu einer ganzen
if %1==TEST echo Parameter korrekt
Menge rger fhrt: Schlielich wird der PC
einen Groteil der gespeicherten Programme
um die hufigsten Schreibweisen des
nicht mehr starten knnen!
bentigten Wortes TEST zu prfen. Als ich
Als Alheilmittel wird dagegen der Aufruf
dann mit der FOR-IN-DO Schleife vertraut
eines zweiten Kommandointerpreters
war, konnte ich diese Prfung wie folgt
empfohlen, mit gleichzeitigem Neustart der
verkrzen:
o.g. Technik in Form einer Batchdatei. Sobald
aber der zweite Kommandointerpreter
for %%a in (test Test TEST) do if %%a==%1 echo
Parameter korrekt beendet wird, ist auch die Variable XYZ und
ihre Definition wieder verschwunden. Ein
Doch leider werden die beiden Verfahren nachfolgender Batch wird, der auf XYZ
nicht mit den Schreibweisen TeST, TEst, angewiesen ist, die Variable vergebens
teST, TesT usw. fertig, die durch suchen und sehr wahrscheinlich fehlerhaft
berhastetes Eintippen entstehen knnen. enden. Das kann vom Abbruch mit
Bei kurzen Worten wie TEST kann man zwar Fehlermeldung ber den endlosen Ablauf der
alle Mglichkeiten im voraus Routine bis zum Verlust von Dateien reichen!
einprogrammieren, aber bei Worten wie So kam ich nach umfangreichem
DISKETTE oder FESTPLATTE wre diese Brainstorming und etlicher Tests auf eine
intelligente Programmierung zu umfangreich sicherere Technik der Umwandlung, die
und ineffektiv. hauptschlich durch Parameter getragen
So kam ich nach eingehenden wird. Nur die Variable PATH wird auch
Beobachtungen und Versuchen zu dieser weiterhin verndert, da ohne sie bisher keine
Technik: Umwandlung von Klein- in Grobuchstaben
mglich zu sein scheint.
set oldpath=%PATH%
path=%1
set xyz=%PATH%
path=%OLDPATH%
if %XYZ%==TEST echo Parameter korrekt
C:\TEXTE\PRIVAT\UTE" ein schneller Ver- UPCASE.BAT prft auch das, so landen diese
zeichniswechsel in C:\TEXTE\PRIVAT\UTE Parameter wieder in der Variable PATH.
ermglicht, wenn man bei spteren Starts Wird beim Aufruf der Batchdatei, die die
nur "ZU ute" oder auch "ZU UTE" eingibt. Umwandlung eines Parameters in
Beim ersten Start sind also zwei Parameter, Grobuchstaben wnscht, vergessen ein
%1 und %2, ntig, damit man spter ZU.BAT Parameter anzugeben, so schtzt der Punkt
nur noch mit einem Parameter, %1, vor %BDV%%BDY%%0 vor Fehlfunktion von
aufzurufen braucht und in den Vorteil des UPCASE.BAT. Vorausgesetzt, man hat diesen
einfachen Verzeichniswechsels kommt. Punkt selber nicht beim schreiben der Zeile
Um die Funktionsweise dieser zwei vergessen!
Parameterbergabe zu verstehen, stellen wir Wer UPCASE.BAT nutzen mchte, mu mit
einmal die Zeilen mit der Nummer zwei aus diesen Zeilen seine Batchdatei beginnen,
UPTEST1.BAT und ZU.BAT gegenber: damit UPCASE.BAT benutzt werden kann:
SET O=P
IF %O%.==. GOTO OFF
rem
rem Rest der Routine
rem
:off
SET EV3=0123456789012345678901234567
IF NOT %EV3%.==0123456789012345678901234567.
SET EV3=
IF %EV3%.==. GOTO OFF
@echo off
Aber im krassesten Fall hatte ich dann das rem
rem How to solve the problem with environmententries
folgende Abbild vom Environment:
without equal-sign or
rem with a full environment! (knowned at MS-DOS)
COMSPEC=C:\COMMAND.COM rem
PATH=C:\DOS;C:\BATCH rem C:\BATCH\TRYTOSET.BAT - this file
PROMPT=$P$G rem C:\BATCH\TTS2.BAT - made by
TEMP=F:\ C:\BATCH\TRYTOSET.BAT
OS=MS-DOS rem
VER=6.22 rem SYNTAX: TRYTOSET VARIABLE=DEFINITION
BDV=C: rem SYNTAX: CALL C:\BATCH\TRYTOSET.BAT
BDY=\BATCH\ VARIABLE=DEFINITION
LG=049 rem
MSG=2 rem written by: Lars Aschenbach, Germany
EV3 rem
if %1%2.==. goto err
Im Environment ist zwar die Zeichenfolge if %2.==. goto err
EV3 zu sehen, aber kein Gleichheitszeichen if %3.==@. goto next
und keine Definition mehr! Was ich auch if %COMSPEC%.==. goto err
echo @set %1=%2>c:\batch\tts2.bat
versuchte, ich konnte diese Zeichenfolge EV3
if not exist c:\batch\tts2.bat goto err
nicht mehr mit dem SET-Befehl lschen!!! echo @if %%%1%%.==. c:\batch\trytoset.bat %1 %2
Nur ber DEBUG gelang mir das lschen per @>>c:\batch\tts2.bat
Hand! if exist c:\batch\tts2.bat %COMSPEC% /c
Die meisten Batchprogrammierer wurden c:\batch\tts2.bat>nul
nun mit den Achseln zucken und sagen:"Na :next
if %0.==trytoset. if %3.==@. echo Can't set the variable
und? Mit dieser Variablen-Leiche kann ich
%1!
leben!". if %0.==TRYTOSET. if %3.==@. echo Can't set the
Aber ich kann es nicht, da ich auch variable %1!
Batchdateien habe, die das Environment if %3.==. set %1=%2
manipulieren (z.B. vollautomatisch die :err
Reihenfolge der Variablen umstellen if %1%2.==. echo The name and the definition of the
variable is missing!
knnen)!!!!
if %2.==. echo Definition of the variable is missing!
Sobald also so eine Variablen-Leiche im if %COMSPEC%.==. echo The variable COMSPEC is
Environment steckt, mssen meine Routinen missing!
die Waffen strecken und vorzeitig abbrechen if not %COMSPEC%.==. if not exist c:\batch\tts2.bat echo
- ich habe sie auch darauf getrimmt. Disk is full!
Ich habe wegen dieses, fur mich sehr if exist c:\batch\tts2.bat del c:\batch\tts2.bat
relevanten Problems, bereits mit Microsoft
und anderen Batchexperten kommuniziert - Weil das Problem international bekannt und
ohne Erfolg! MS denkt z.B. auch nicht daran, reproduzierbar ist, habe ich die Meldungen in
die fehlerhafte COMMAND.COM zu Englisch gehalten und will diese Losung auch
berarbeiten weil DOS fur sie (MS) tot ist!!! noch an einige bekannte Batchexperten
Ob dieses Problem unter PC-DOS, schicken!
NovellDOS oder auch PTS-DOS existiert, ist Will man nun z.B. im Direktmodus die
mir nicht bekannt! Auf jeden Fall gibt es Variable O anlegen und mit P definieren, so
unter 4DOS und auf meinem PoFo keine ruft man diese Batchdatei mit der Eingabe:
Variablenleichen, wie ich durch intensive TRYTOSET O=P auf.
Tests feststellte. In einer Batchdatei konnte TRYTOSET.BAT
Ich habe dennoch nicht die Flinte ins Korn so eingebunden werden, wenn nicht ein
geworfen und versucht dieses Problem in den Parameter als Variable oder Definition in
Griff zu bekommen - und tatschlich gibt es Frage kme (CLTST1.BAT):
eine Losung, die sogar die Fehlermeldung
@echo off
"Umgebungsspeicher voll!" nicht erscheinen
call c:\batch\trytoset.bat o=p
lat: if not %o%.==p. echo The environment must be full!
if %o%.==p. echo Well done!
@echo off
call c:\batch\trytoset.bat %1 %2
set | find /i "%1=%2">nul
if errorlevel 1 echo The Environment must be full!
if not errorlevel 1 if errorlevel 0 echo Well done!
LW&DISK.BAT, 7 print, 24
(*.*), 8 prn, 36
@, 47 PROMPT$h$h, 47
@cls, 20 Ramdisk, 38
@DEL %1, 13 set, 33
@DIR %1, 13 SET OPATH, 39
@echo, 45 SET VAR, 42
ANSI.SYS, 28; 31 SHIFT, 20
ATTRIB-Befehl, 37 Steuerzeichen, 38
AUTOEXEC, 42 STRG+ALT+EINF, 31
AUTOEXEC.BAT, 44 Syntax, 8
batch, 49 SYSTEM, 38
BIOS, 29 Temporres Verzeichnis, 8
BUFFERS, 31 TIME, 22
CHKDSK, 22; 31 TYPE, 34
CHKDSK /F, 14 Umgebungsspeicher voll, 16
CHKDSK /V, 14 Unrecognized command, 31
CHKVAR, 28 Variable, 35; 41; 45
CHKVAR.BAT, 28 Wildcards, 12; 19
CLOCK$, 13
con, 33
CONFIG.SYS, 27; 31; 44
copy, 19; 21; 22; 42; 43
DATE, 22
defrag, 34
DEFRAG.BAT, 34
del, 11
DIR, 22
DISKFOLIO, 16
DVV.BAT, 35
DVV2.DAT, 35
ECHO, 9; 19
ECHO,, 22
errorlevel, 25
FILES, 31
FolioDrive, 16
FORMAT, 22
GW-BASIC, 38; 52
gwbasic.exe, 46
HELP, 22
HELP., 22
if exist, 32
INKEY$, 53
KEY LIST, 52
Klammeraffen, 22
LABEL, 31
message, 42
MS-DOS, 44
Multiprocessing, 39
nul, 13; 17; 21; 34; 36; 38; 40; 46
OPTIONVAR, 25
path, 39
PoFo, 8; 27