Supportnet Computer
Planet of Tech

Supportnet / Forum / Anwendungen(Java,C++...)

TXTdateien in verzeichniss mit bstätigung löschen





Frage

Hallo Habn problem, was is´n hier falsch? [code] @echo off Color 1F echo Alle Textdateien werden jetzt in diesem Verzeichniss UNWIEDERRUFLICH gelöscht! echo Wenn sie damit einverstanden sind, drücken sie y, wenn nicht, dann n set eingabe echo y | eingabe=löschen echo n | eingabe=behalten pause>nul if eingabe=löschen ( goto löschen ) if eingabe=behalten ( goto behalten ) :löschen del *.txt /f /q echo Löschvorgang echo Alle Textdateien wurden erfolgreich gelöscht! Taste drücken pause>nul goto ende :behalten echo Ok, nicht löschen echo Druecken sie einfach eine beliebige Taste :-( pause>nul :ende echo Nochmal Taste drücken pause>nul [/code] also ich hab nich soviel erfahrung, daher kann es etwas programmierpsrachenmäßig aussehen. Geht das überhaupt? mfg TByte

Antwort 1 von Ralfman

Hi TByte,
ich würde das mit dem guten alten choice Befehl machen den es seit Windows 2000 nicht mehr zusammen mit dem Betriebssysteb gibt.
Aber hier bekommst Du den zum Downloaden.
Wenn Du schwierigkeiten hast, schreib mir doch einfach 'ne mail.

Ralf

Antwort 2 von TByte

aba is das allgemein denn möglich? so wie in c++ eine variable später zuweisen? oder gibt es else befehle?

Antwort 3 von Ralfman

Variablen setz Du mit set.
Tipp in der DOS-BOX einfach mal set /?

Ralf

Antwort 4 von TByte

hab ich doch, aber es klappt nicht, was ist da oben den falsch?

Antwort 5 von Ralfman

So würde ich das machen:
@echo off
Color 1F
echo.
echo Alle Textdateien werden jetzt in diesem Verzeichniss UNWIEDERRUFLICH gelöscht!
echo Drücken Sie die gewünschte Option.
echo.
echo.
echo           Option    1    um nichts zu löschen
echo.
echo           Option    2    Um alle textdateien zu löschen
echo.
echo.
choice /c:12 /N Bitte eine Option w„hlen:
if errorlevel 2 goto löschen
if errorlevel 1 goto behalten

:löschen
del *.txt /f /q
echo.
echo.
echo Der Löschvorgang wird eingeleitet
echo.
echo.
echo Alle Textdateien wurden erfolgreich gelöscht! Taste drücken
echo.
echo.
pause
goto ende

:behalten
echo.
echo.
echo Ok, nicht löschen
echo.
echo.
echo Druecken sie einfach eine beliebige Taste :-(
echo.
echo.
pause

:ende
exit


Der Choice von dem Link funzt nicht, aber Du hast Post von mir...

Ralf

Antwort 6 von TByte

danke ralfman.
aber was macht denn die choise funktion genau, welche parameter könne übergeben werden, usw....?

Antwort 7 von Ralfman

Kopier Choice einfach in Dein Windows verzeichnis, und Tipp in der DOS-BOX einfach mal Choice /? ein.

Zitat:

Fordert den Benutzer zur Auswahl von mehreren m”glichen Optionen auf.

CHOICE [/C[:]Optionen] [/N] [/S] [/T[:]c,nn] [Text]

/C[:]Optionen Zul„ssige Tasten fr die Optionen. Standard ist JN.
/N Die Eingabeaufforderung endet nicht mit der Angabe der
Optionstasten und dem Fragezeichen.
/S Bei der Eingabe wird Groá- und Kleinschreibung bercksichtigt.
/T[:]c,nn Die Standardauswahl fr c nach nn Sekunden.
Text Eingabeaufforderung, die angezeigt wird.

ERRORLEVEL nimmt den Offset-Wert der vom Benutzer gedrckten Optionstaste an.


Ralf

Antwort 8 von TByte

danke
gleichmal nochne frage:
mit

if exist %irgendwas.irgendwas

kann man ja die Existenz auf etwas prüfen. Wie kann man denn prüfen, ob eine Datei NICHT da ist? Also wenn jemand sich jemand für löschen entscheidet und die datei nicht da ist kommt irgendweine UNSCHÖNE fehlermeldung. Daher irgendwie erstmal prüfen, ob *.txt-dateien überhaupt da sind!
mfg
TByte

Antwort 9 von Ralfman

Auch dazu würde Dir die Eingabe if /? in der DOS-BOX schon weitergeholfen haben, und Du bräuchtest nicht Fragen...
if not exist Pfad\Datei


Ralf

Antwort 10 von TByte

einfach nur ein
not
reicht? cool, danke.
naja, ich wusst nicht, ob ich unter
if
oder unter
exist
nachgucken sollte.
mfg
TByte

Antwort 11 von TByte

nochn problem:
Ich habs jetzt ein bisschen verarscht hingeschrieben, es klappt aber nicht. ralfman, deine version klappt auch nicht!:

@echo off
Color 1F
echo Alle Textdateien werden jetzt in diesem Verzeichniss UNWIEDERRUFLICH gelöscht!
echo Wenn sie damit einverstanden sind, drücken sie j, wenn nicht, dann n.
echo Zum beenden drücken b.

Choice /C: jnb
If Errorlevel 1 goto loeschen
If Errorlevel 2 goto behalten
If Errorlevel 3 goto ende

:loeschen
If not exist *.txt (
echo Die Datei existiert aber nicht, sie SCHWACHKOPF!, also erstellen sie erstmal
echo gefälligst eine!
echo Das Programm wird jetzt beendet, drücken dazu eine beliebige Taste.
pause>nul
goto ende
)
del *.txt /f /q
echo Löschvorgang...
echo Löschvorgang beendet.
echo DANKEDANKEDANKEDANKE!!!! ES MACHT SPASS, IHRE DATEIEN ZU LOESCHEN!!!
echo Alle Textdateien wurden erfolgreich gelöscht! Taste drücken, um zu beenden.
pause>nul
goto ende

:behalten
echo WARUM?????? ICH HASSE SIE!!!!!! ICH WOLLTE IHRE TEXTDATEIEN LÖSCHEN!!!
echo Aber wenn sie wollen, dann druecken sie einfach eine beliebige Taste :-(
pause>nul

:ende
exit


was ist hier falsch?

Antwort 12 von Ralfman

Was mir sofort auffält, ist der Errorlevel.
Der wird von oben nach unten Abgefragt, in Deinem Beispiel ist das Umgekehrt.
So hatte ich Dir das nicht geschrieben. Also wenn es nicht Funktioniert. solltest Du Dich auf Fehleranalyse begeben, die Hile zu den einzelnen Befehlen Durchlesen, und wenn Du nicht weiterkommst Fragen.
Morgen mehr.

Ralf

Antwort 13 von Ralfman

Ändere die Coice Zeile mal Bitte so ab:
Choice /C:jnb Bitte Option wählen
If Errorlevel 3 goto ende
If Errorlevel 2 goto behalten
If Errorlevel 1 goto loeschen

Und der Text wird Leserlicher durch:
echo Wenn sie damit einverstanden sind, drücken Sie j,
echo Wenn Sie nicht einverstanden sind, drücken Sie n,
echo Zum beenden drücken Sie b.

Selbstverständlich kannst Du den Text auch noch auseinander schieben in dem Du echo anweist eine leerzeile zu chreiben mit:
echo.


Ralf

Antwort 14 von TByte

Hallo.
Klappt immernoch nicht:


@echo off
Color 1F
echo Alle Textdateien werden jetzt in diesem Verzeichniss UNWIEDERRUFLICH gelöscht!
echo Wenn sie damit einverstanden sind, drücken sie j.
echo Wenn nicht, dann drücken sie n.
echo Zum beenden drücken b.

Choice /C: jnb Bitte wählen
If Errorlevel 1 goto loeschen
If Errorlevel 2 goto behalten
If Errorlevel 3 goto ende

:loeschen
If not exist *.txt (
echo Die Datei existiert aber nicht, sie SCHWACHKOPF!, also erstellen sie erstmal
echo gefälligst eine!
echo Das Programm wird jetzt beendet, drücken dazu eine beliebige Taste.
pause>nul
goto ende
)
del *.txt /f /q
echo Löschvorgang...
echo Löschvorgang beendet.
echo DANKEDANKEDANKEDANKE!!!! ES MACHT SPASS, IHRE DATEIEN ZU LOESCHEN!!!
echo Alle Textdateien wurden erfolgreich gelöscht! Taste drücken, um zu beenden.
pause>nul
goto ende

:behalten
echo WARUM?????? ICH HASSE SIE!!!!!! ICH WOLLTE IHRE TEXTDATEIEN LÖSCHEN!!!
echo Aber wenn sie wollen, dann druecken sie einfach eine beliebige Taste :-(
pause>nul

:ende
exit



Antwort 15 von Ralfman

Kann ja auch nicht Funktionieren.
Falsch:
Choice /C: jnb Bitte wählen

Richtig:
Choice /C:jnb Bitte wählen


Ralf

Antwort 16 von Ralfman

Außerdem
Falsch:
If Errorlevel 1 goto loeschen
If Errorlevel 2 goto behalten
If Errorlevel 3 goto ende

Richtig:
If Errorlevel 3 goto ende
If Errorlevel 2 goto behalten
If Errorlevel 1 goto loeschen


Reihenfolge Beachten!!!

Ralf

Antwort 17 von Ralfman

Hast Du Dir meine Antworten 12 und 13 eigendlich Durchgelesen?
Das waren nicht nur Verbesserungsvorschläge, sondern in erster Linie fehlerbeseitigungen.

Ralf

Antwort 18 von Ralfman

Was Du allerdings schön geregelt, und Anscheinend auch schnell Begrigffen hast, ist die :löschen Geschichte.
Ich Persönlich hätte aus lauter Faulheit noch eine zusätzliche if Abfrage eingebaut, aber so wie Du das gemacht hast ist das schon viel Eleganter.

Ralf

Antwort 19 von TByte

Hallo ralfman
Ja habs mir durchgelesen, hat aber ja nicht geklappt!
Jetzt auch nicht! egal wierum ich es drehe, die errorlevel, es will einfach nicht gehen. Seit #15 erscheint wenigstens was, aber die kommenden Antworten sind jetzt so extrem vermisxht, wenn ich j drücke kommt das ergebniss für nein und umgekehrt, egal wierum ich die Errorlevele drehe!
mfg
TByte

Antwort 20 von Ralfman

Ich schau mogen mal 'drüber. für heute ist erst mal Feierabend.

Ralf

Antwort 21 von Ralfman

Ich habs ausprobiert (obwohl ich immer noch nicht begreife wann Du den Script sinvoll einsetzen möchtest, zu übungszwecken und zum Lernen - Verstehen ists OK), und es Funktioniert so:
@echo off
Color 1F
echo Alle Textdateien werden jetzt in diesem Verzeichniss UNWIEDERRUFLICH gelöscht!
echo Wenn sie damit einverstanden sind, drücken sie j.
echo Wenn nicht, dann drücken sie n.
echo Zum beenden drücken b.

Choice /C:jbn Bitte wählen
If Errorlevel 3 goto ende
If Errorlevel 2 goto behalten
If Errorlevel 1 goto loeschen

:loeschen
If not exist *.txt (
echo Die Datei existiert aber nicht, sie SCHWACHKOPF!, also erstellen sie erstmal
echo gefälligst eine!
echo Das Programm wird jetzt beendet, drücken dazu eine beliebige Taste.
pause>nul
goto ende
)
del *.txt /f /q
echo Löschvorgang...
echo Löschvorgang beendet.
echo DANKEDANKEDANKEDANKE!!!! ES MACHT SPASS, IHRE DATEIEN ZU LOESCHEN!!!
echo Alle Textdateien wurden erfolgreich gelöscht! Taste drücken, um zu beenden.
pause>nul
goto ende

:behalten
echo WARUM?????? ICH HASSE SIE!!!!!! ICH WOLLTE IHRE TEXTDATEIEN LÖSCHEN!!!
echo Aber wenn sie wollen, dann druecken sie einfach eine beliebige Taste :-(
pause>nul

:ende
exit

nun mußt Du nur noch die Umlaute anpassen, wie das geht, weist Du ja inzwischen.

Ralf

Antwort 22 von TByte

Juhu danke, es klappt!
Und mit dem anderen Textdatei ersteller ergänzen sich die beiden gut ;-)

Der Vorteil von Batch-dateien ist, dass sie nicht kompiliert werden müssen. Aus meinen anderen Threads kann man entnehmen, dass ichs nicht so mit compilern hab.
-------
Ich halt mir den Thread offen, falls noch welche Fragen dazu auftauchen

PS.:Damit kann man auch tolle Spiele machen ;-)

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


Ähnliche Themen:


Suche in allen vorhandenen Beiträgen: