Verzeichnisexistenzpr"ufung von DOS zu NT 4.0 (war: "ohne Bet
Heinrich Allers
allers at t-online.de
Mo Jun 14 15:36:48 CEST 1999
Liebe Kolleginnen und Kollegen:
in dem Text, den ich mein gestern hier angezeigtes
Verfahren zur Verzeichnisexistenzprüfung begleiten lasse,
schrieb ich, daß ich nun endlich auch ein Stück dessen
verstanden hätte, was den Unterschied unter NT 4.0 zwischen
'cmd.exe' und 'command.com' bei der Eröffnung von DOS-
Prozessen ausmacht.
Zwei Kollegen brachten mich heute erst arg ins Schleudern, als
sie mich fragten, wo ich denn einen Unterschied sähe: Egal, ob
das DOS-Fenster mit 'cmd' oder mit 'command' aufgemacht wird,
die Ergebnisse der von mir unter einer definierten
Testumgebung vorgeschlagenen Abfolge von Bedingungsprüfungen
(auf Verzeichnis- und Datei-Existenz) seien identisch.
Mittlerweile habe ich herausbekommen, daß das stimmt, wenn man
'cmd' oder 'command' wirklich nur zur Bereitstellung des DOS-
Bereitschaftszeichens benutzt.
Baut man aber zwei DOS-Prozesse auf, einmal
als PIF-Datei ("Programm") mit
c:\winnt\system32\command.com /E:4096 /C c:\temp\direxpr.bat c
bzw.
%system32%\command.com /E:4096 /C c:\temp\direxpr.bat c
und das andere Mal
als LNK-Datei ("Verknüpfung") mit
c:\winnt\system32\cmd.exe /E:4096 /C c:\temp\direxpr.bat c
bzw.
%system32%\cmd.exe /E:4096 /C c:\temp\direxpr.bat c
so sind die Ergebnisse vollkommen verschieden:
Im ersten Fall (mit 'command') kommt als Ergebnis der 36
Bedingungsprüfungen
Ergebnisse:
if exist c:\temp0 - reagiert positiv
if exist c:\temp2\*.* - reagiert positiv
if exist c:\temp2\* - reagiert positiv
if exist c:\temp3\*.* - reagiert positiv
if exist c:\temp5\*.* - reagiert positiv
heraus, im zweiten Fall (mit 'cmd'):
Ergebnisse:
if exist c:\temp0 - reagiert positiv
if exist c:\temp1 - reagiert positiv
if exist c:\temp1\ - reagiert positiv
if exist c:\temp1\*.* - reagiert positiv
if exist c:\temp1\* - reagiert positiv
if exist c:\temp1\nul - reagiert positiv
if exist c:\temp1\nul: - reagiert positiv
if exist c:\temp2 - reagiert positiv
if exist c:\temp2\ - reagiert positiv
if exist c:\temp2\*.* - reagiert positiv
if exist c:\temp2\* - reagiert positiv
if exist c:\temp2\nul - reagiert positiv
if exist c:\temp2\nul: - reagiert positiv
if exist c:\temp3 - reagiert positiv
if exist c:\temp3\ - reagiert positiv
if exist c:\temp3\*.* - reagiert positiv
if exist c:\temp3\* - reagiert positiv
if exist c:\temp3\nul - reagiert positiv
if exist c:\temp3\nul: - reagiert positiv
if exist c:\temp4 - reagiert positiv
if exist c:\temp4\ - reagiert positiv
if exist c:\temp4\*.* - reagiert positiv
if exist c:\temp4\* - reagiert positiv
if exist c:\temp4\nul - reagiert positiv
if exist c:\temp4\nul: - reagiert positiv
if exist c:\temp5 - reagiert positiv
if exist c:\temp5\ - reagiert positiv
if exist c:\temp5\*.* - reagiert positiv
if exist c:\temp5\* - reagiert positiv
if exist c:\temp5\nul - reagiert positiv
if exist c:\temp5\nul: - reagiert positiv
(Dieses Verfahren des Einbaus der Verzeichnisexistenprüfungs-
Stapeldatei in die Befehlszeile entspricht aber genau dem
Verfahren, das ich für die Einbindung von Allegros DOS- oder
vorgeschalteten (wie CockPit oder Dougmenu) Prozessen für
notwendig halte).
Der Unterschied ist frappant. Insbesondere zeigt sich, daß
unter 'command' die Existenz der bei der von mir definierten
Testumgebung _leeren_ Verzeichnisse c:\temp1 und c:\temp4
überhaupt nicht wahrgenommen wird!
Mit freundlichen Grüßen:
Heinrich Allers
Goethe-Institut, München
allers at goethe.de
allers at t-online.de
http://home.t-online.de/home/allers
Mehr Informationen über die Mailingliste Allegro