Supportnet Computer
Planet of Tech

Supportnet / Forum / Windows98

DOS-Anwendung per Usereingabe (?) von Windows beenden lassen





Frage

Guten Abend, ich bin mit Dos nicht sonderlich bewandert und hätte eine Frage zum Schreiben einer Batchdatei. Sie wird per Autostart beim Rechnerstart ausgeführt und soll auf das Verzeichnis C:\XYZ aufmerksam machen, bzw. zur Wahl stellen, ob dieses Verzeichnis vom User gelöscht werden soll oder nicht: @echo off echo. echo Lösche den Ordnerinhalt von XYZ auf C: echo ======================================= echo. echo Nein? echo Klick auf X - Schliessen ? echo. echo Ja? pause cls deltree /y C:\XYZ echo. echo Klick auf X - Schliessen... Problem: Wenn man gleich als Erstes "nein? bestätigen will und das Fenster rechts oben mit X wegklickt, erscheint ein lästiger Hinweis, dass Windows die Anwendung nicht beenden kann ... ob man die Informationen verlieren will ... und man muss dies zusätzlich mit "Ja" beenden/wegklicken. Wie könnte man die Batch im Bereich des Fragezeichens so abändern, dass nach "Nein?" das DOS-Fenster sofort verschwindet? Grüße

Antwort 1 von batti-batch

Hallo Echo_On,


der Befehl zum Beenden der aktuellen Instanz des Kommandozeileninterpreters lautet EXIT.

Schau Dir in Zusammenhang mit Deinem Problem auch mal den Beitrag https://supportnet.de/threads/1638134 an; dort habe ich in Antwort 8 ein kleines Auswahlmenü vorgestellt.
Diese Lösung kannst Du sicher sehr leicht an Deine Bedürfnisse anpassen.


Viel Erfolg!

Herzliche Grüße
batti-batch

Antwort 2 von Echo_On

Zitat:
der Befehl zum Beenden der aktuellen Instanz des Kommandozeileninterpreters lautet EXIT.

Hallo,

ja, der Befehl war mir zwar bekannt, nur konnte ich ihn hier irgendwie nicht richtig unterbringen/verwenden ...
- wenn ich also schreibe:

@echo off
echo.
echo Loescht den Ordnerinhalt von XYZ auf C:
echo =======================================
echo.
echo Nein?
echo Klick auf X - Schliessen
exit
echo.
echo Ja?
pause
cls
deltree /y C:\XYZ
echo.
echo Klick auf X - Schliessen

... so erscheint im Fenster lediglich der Text

Loescht den Ordnerinhalt von XYZ auf C:
===============================

Nein?
Klick auf X - Schliessen


... und der ganze obige Rest des Texts zum Bestätigen des Löschens mit "Ja" fehlt ... :-(
Wie sähe der Batchtext denn nun konkret aus?

Grüße

Antwort 3 von batti-batch

Hallo Echo_On,


ich hatte leider erst nach dem Absenden meiner Antwort gesehen, das Du Deine Frage im Bereich Windows 98 gepostet hattest; mithin ist die von mir angesprochene Lösung (siehe Link in der Antwort 1) so garnicht machbar.

Da habe ich meinen Windows 98-Rechner reaktiviert und eine passende Batch zusammengebaut, die unter Windows 98 funktioniert.

Aber aufgepasst! Diese Lösung ist NUR bis Windows 98 lauffähig!

Zwei Kleinigkeiten musst Du noch den Gegebenheiten anpassen: den Verzeichnisnamen sowie, falls gewünscht, den MD-Befehl durch Entfernen des davorstehenden REM aktivieren. Damit würde das mit allen Dateien gelöschte Verzeichnis als leeres Verzeichnis wieder angelegt werden.

Hier also das Programm:

REM
REM Testprogramm
REM
REM Loeschen eines Verzeichnisses
REM nach Abfrage
REM
REM https://supportnet.de/threads/1691272
REM 
REM (c) batti-batch 
REM Batch erstellt am 04.03.2008
REM 
REM Getestet unter Windows 98
REM Batch nur lauffaehig bis Windows 98
REM
CLS

REM Die nachfolgende Zeile muss angepasst werden
SET verzeichnis=a:\test

REM Wenn das Verzeichnis nicht existiert, wird
REM das Programm beendet
IF NOT EXIST "%verzeichnis%"\NUL EXIT

REM Auswahl, ob das Verzeichnis geloescht werden soll
REM mit sich anschliessender Abfrage des Errorlevels
CHOICE /c:JN /t:N,10 Wollen Sie das Verzeichnis "%verzeichnis%" loeschen
IF ERRORLEVEL 2 EXIT
IF ERRORLEVEL 1 DELTREE /y "%verzeichnis%"
IF EXIST "%verzeichnis%"\NUL GOTO :fehler

REM Falls das Verzeichnis wieder angelegt werden soll,
REM in der naechsten Zeile das REM entfernen
REM MD "%verzeichnis%"
EXIT

:fehler
ECHO Das Loeschen des Verzeichnisses "%verzeichnis%" ist fehlgeschlagen!
ECHO.


Das Programm wartet bei der Abfrage 10 Sekunden; wird bis dahin keine Taste gedückt, wird das Programm beendet.
Ist das Löschen des Verzeichnisses aus irgendwelchen Gründen fehlgeschlagen, wird das Programm nicht beendet und die Fehlermeldung bleibt auf dem Monitor.

Viel Spass beim Testen!

Herzliche Grüße
batti-batch

Antwort 4 von Echo_On

Hallo,

ich verzichte auf die Ja/Nein-Auswahl, simpelster "Gegen"Vorschlag, wiederum am Beispiel eines Ordners auf C:\ - des zu löschenden Papierkorbs (wenn er mal wieder defekt sein sollte und als Ganzes gelöscht werden muss^^):

@echo off
start /m deltree /y C:\recycled


Wird für diese Subminiatur-Batch ;-) eine Verknüpfung im Autostart-Ordner angelegt, wird
- bei Nichtanwesenheit des zu löschenden Ordners der DOS-Run sofort beendet
- bei Anwesenheit des zu löschenden Ordners der Ordner vollständig gelöscht - es erscheint keine Fehlermeldung

Durch den Deltree-Schalter "/m" wird das DOS-Fenster sofort minimiert und verschwindet in die Schnellstartleiste,
was
a) eine Info über den Löschvorgang bereitstellt, und mit Klick auf 'Beenden' ohne Fehlermeldung beendet werden kann (was mir lt. Fragestellung wichtig war, um unnötiges Geklicke zu vermeiden)
oder
b) eine lästige Info sein kann, da sie noch beendet werden sollte, damit sie nicht in der Schnellstartleiste stehen bleibt.

Letzteren Punkt zu beheben würde ich mir noch wünschen, ansonsten erfüllt die Batch bereits ihren Zweck.

Grüße

Antwort 5 von Echo_On

Edit: Durch den Start-Schalter "/m" ...

Antwort 6 von batti-batch

Hallo Echo_on,


wenn es jetzt nur noch darum geht, die Eingabeaufforderung zu schließen, kann man an dieser Stelle wiederum auf den EXIT-Befehl zurückgreifen.
Füge Deiner Batch in der letzten Zeile noch den EXIT-Befehl hinzu, so das sich folgendes Programm ergibt:

@ECHO on
START /m DELTREE /y c:\reycled
EXIT


Damit wird sowohl das Programm als auch die Eingabeaufforderung beendet.

Ein lästiges Klicken entfällt damit.


Viel Spass beim Testen!

Herzliche Grüße
batti-batch

Antwort 7 von batti-batch

Hallo Echo_on,


ich hatte nicht gedacht, das da noch ein paar Tücken lauern.

Ich selber zusätzlich noch ein paar Tests gemacht; daraus ergab sich Folgendes:

@ECHO on
START /m COMMAND /c DELTREE /y c:\reycled
EXIT


Jetzt haben wir bald alle Möglichkeiten durch.


Herzliche Grüße
batti-batch

Antwort 8 von Helfer1

Hi,
wenn sich das Fenster immer noch nicht von allein schliessen sollte, dann gibt es noch eine Möglichkeit. Beim Ausführen der Batch wird in gleichen Ordner einDOS-Link-Icon angelegt. Dort kannst du über die linke Maustaste unter "Eigenschaften/Programm" einen Haken "Beim Beenden schließen" reinmachen. Dann wird das Fenster auf jeden Fall geschlossen

Antwort 9 von Helfer1

Sorry, Kontextmenü über rechte Maustaste.

Antwort 10 von Echo_On

Zitat:
@ECHO on
START /m DELTREE /y c:\reycled
EXIT

Hatte ich schon, funktioniert so wenig wie

@ECHO off
START /m DELTREE /y c:\reycled
EXIT

Problem: der deltree /y-Befehl erzeugt eine Pause im Ablauf, man kann die batch damit so schreiben, dass eine ja/nein-Eingabe erfolgen muss.
Nur: Man muss es machen! Man muss klicken! Entweder die Eingabe, und/oder der Klick auf Beenden des DOS-Fensters...

Zitat:
@ECHO on
START /m COMMAND /c DELTREE /y c:\reycled
EXIT

Hat mein 98SE ein anderes DOS?^^
Das funktioniert bei mir rein gar nicht:
Command /c verhindert gar das Löschen des Verzeichnisses, mit Echo on lässt sich das Fenster überhaupt nicht mehr wegklicken, erst mit Echo off und Command /c an anderer Stelle wird wieder gelöscht - nur: das oben beschriebene Problem - der Klick auf Beenden des DOS-Fensters - bleibt bestehen!

Zitat:
ich hatte nicht gedacht, das da noch ein paar Tücken lauern.

Tja, das' 'n Ding, was?^^

Am besten funkt (zumindest bei mir) immer noch das

@echo off
start /m deltree /y c:\recycled

aus AW4. Die Frage bleibt aber nach wie vor:
Was für eine Konstellation/welcher Befehl beendet die Batch automatisch?

Gruß

Antwort 11 von Echo_On

Zitat:
wenn sich das Fenster immer noch nicht von allein schliessen sollte, dann gibt es noch eine Möglichkeit. Beim Ausführen der Batch wird in gleichen Ordner einDOS-Link-Icon angelegt. Dort kannst du über die linke Maustaste unter "Eigenschaften/Programm" einen Haken "Beim Beenden schließen" reinmachen.

Ja nun, ... beim Ausführen der Batch wird der Ordner unmittelbar gelöscht - da ist nichts mehr anzuhaken...^^

Ich hatte allerdings in der pif-Verknüpfung der Batch im Schnellstartverzeichnis das "Beim Beenden schließen" angehäkelt:
Es bringt nichts! Die Batch wird nicht automatisch geschlossen!

Gruß

Antwort 12 von Helfer1

@ Echo_On

zu AW4
...Da stimmt dein Code nicht, wenn sich dein Fenster nicht schleßt. Stell ihn mal hier rein.

Antwort 13 von Echo_On

Tscha, das Fenster schließt - laut Eigenschaftsfenster - eben "Beim Beenden schließen", insofern scheint mir das erklärbar, denn der Deltree-Befehl wird vom User beendet, Eigenzitat aus AW10: erzeugt eine Pause im Ablauf bla bla. Nur: Man muss es machen! Ihn nämlich "von Hand" beenden, was dämlich ist ... :-(

Gibbets denn da wirklich kein vorausschauender oder nach zügelnder Befehl? ;-)

Gruß

Antwort 14 von Helfer1

Die Abfrage mit den 10 sec. Pause muss raus. Dann schliesst auch das Fenster von allein.

Antwort 15 von Echo_on

Am Deltree-Verhalten ändert das nichts, damit schließt sich nicht automatisch das Fenster.
Aber schreib doch bitte deine Version mal so hin, wie du meinst, dass sie funktioniert

Antwort 16 von Helfer1

Hier mein Vorschlag. Diese Batch funktioniert bei mir unter Win98.

@echo off
echo.
echo   delete.bat                                                            R.P.
echo   ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ Benutzer-Infos ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
echo   ³                                                                        ³Û
echo   ³                 Lösche den Ordnerinhalt von XYZ auf C:                 ³Û
echo   ³                                                                        ³Û
echo   ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙÛ
echo    ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
echo.
echo.

Choice /C:JN - Soll der Ordnerinhalt gelöscht werden? * 
 If Errorlevel 2 goto ABBRUCH

REM Es wird das gesamte Verzeichnis mit Unterverzeichnissen gelöscht.
 deltree /y c:\xyz

REM und erstellen eines neuen leeren Ordners, dann REM entfernen.
REM md c:\xyz

 exit

:ABBRUCH
 exit


Die Pfade und Ordner noch deinen Bedürfnissen anpassen und den Code als delete.bat in einen beliebigen Ordner ablegen und eine Verknüpfung zur delete.bat in den Autostartordner ablegen. Fertig!

Antwort 17 von Helfer1

Nachtrag:
...und natürlich nicht vergessen in der Batch unter "Eigenschaften/Programm" einen Haken "Beim Beenden schließen" reinzumachen.

Antwort 18 von Echo_on

Wenn ich das in schnörkelloser Form schreiben darf (zum verstehen)...
- nochmal am Beispiel des Recycled-Ordners:

@echo off
Choice /C:JN - Soll der Ordnerinhalt gelöscht werden? *
If Errorlevel 2 goto ABBRUCH
REM Es wird das gesamte Verzeichnis mit Unterverzeichnissen gelöscht.
deltree /y c:\recycled
REM und erstellen eines neuen leeren Ordners, dann REM entfernen.
REM md c:\recycled
exit
:ABBRUCH
exit

Also mit ja/nein Auswahl - das funktioniert jetzt bei mir einwandfrei.
Wermutstropfen: beim Start des DOS-Fensters ist dies inaktiv, bevor man also "J" oder "N" drücken kann, muss man erst das Fenster mit der Maus anklicken


Habe mir erlaubt, die Batch so umzuschreiben:

@echo off
If Errorlevel 2 goto x
deltree /y c:\recycled
exit
:x
exit

Plus anhaken in der DOS-Verknüpfung automatisch beenden natürlich.
Nun wird ohne irgendwelche Nachfragen/Zutun des Users das Verzeichnis beim Start gelöscht. Man sieht nur kurz das DOS-Fenster aufblitzen ...
So ist es jetzt ideal für mich

Gruß

Antwort 19 von Helfer1

Ich frage mich, warum es bei dir nicht funktionieren will?

Um den Code noch mehr zu vereinfachen, kannst du auch noch die IF-Anweisung weglassen. Sie ist bei deinen Code sinnlos, da kein Bezug besteht. Du kannst evtl. noch eine Pause einfügen. Dann bleibt das Fenster offen, bis der Löschvorgang auf Tastendruck gestartet wird.

@echo off

pause

deltree /y c:\recycled
exit

Antwort 20 von Echo_off

Zitat:
Ich frage mich, warum es bei dir nicht funktionieren will?

Häh??

Ich möchte kostenlos eine Frage an die Mitglieder stellen:


Ähnliche Themen:


Suche in allen vorhandenen Beiträgen: