Batch sich selbst löschen?

5 Antworten

Vom Fragesteller als hilfreich ausgezeichnet

Nein - Du kannst es zwar befehlen, aber der Löschbefehl führt zur Fehlermeldung, da die Datei während der Ausführung zum Lesen geöffnet ist. Gilt so zumindest für Windows.

Du kannst eine zweite Batchdatei mitliefern oder zur Laufzeit der ersten erzeugen (das ist der Weg, den OddN3ss verlinkt hat), welche die erste löscht. Und dann am Schluss zu dieser verzweigen.

Damit sind zwar nicht alle Spuren entfernt, aber die Original-Datei ist weg.

Ja, das geht. Dazu musst du aber eine zweite CMD.EXE starten, da die Batchdatei ansonsten währenddessen verwendet wird und zum Löschen gesperrt ist:

[Sämtliche Befehle deiner Batchdatei]
start /b cmd.exe /c del %0
exit

Wichtig ist, dass zwischen dem START- und dem EXIT-Befehl nichts mehr steht, damit sich die Batchdatei schließt, bevor die neue cmd.exe den DEL-Befehl ausgeführt hat.

Ja:

del %1%0

del ist der normale Befehl zum löschen und %1 die Variable für den aktuellen Pfad in welchem die Datei liegt, %0 die Variable für den Dateinamen

Bsp.: %1%0 = C:\Windows\test.bat


S1r1us13  25.10.2014, 20:28

In der Regel wird "%1%0" zwar zum kompletten Pfad, aber nur, wenn "%1" gar nichts ist. %0 ist nämlich alleine schon der ganze Pfad.

%~dp0 = Partition & Ordner

%~nx0 = Dateiname mit Endung

%0 = alles zusammen

0

Natürlich. Wahlweise vor oder nach Ausführung der enthaltenen Befehle.