Top-Themen

Aktuelle Themen (A bis Z)

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit
GELÖST

batch datei soll ihren eigenen ordner löschen

Frage Entwicklung Batch & Shell

Mitglied: Phlegma

Phlegma (Level 1) - Jetzt verbinden

13.03.2007, aktualisiert 18.03.2007, 7305 Aufrufe, 9 Kommentare

moinmoin,

also ich hab folgendes problem:

bastla und biber kennen meine installations konstellation schon, aber nochmal für alle die das hier lesen:

ich schreibe an einem längeren batch der eine installation darstellt und deren funktionen hat.

nun auch die deinstallation...

eigentlich ist das ja schön einfach

rd Installordner

und schon feddisch

ne, das reicht mir leider nicht vorallem weil sich die installation im selben ordner befindet und probleme bei diesem löschen auftreten
nun sollen auch wirklich keine reste der installation verbleiben....

also was hab ich gemacht:

01.
echo @echo off >%temp%\instdel.bat 
02.
echo title L"schen... >%temp%\instdel.bat 
03.
echo ping -n 3 127.0.0.1 ^>nul >>%temp%\instdel.bat 
04.
echo cd\ >>%temp%\instdel.bat 
05.
echo rd /s /q "%zielpfad%" >>%temp%\instdel.bat 
06.
echo echo. >>%temp%\instdel.bat 
07.
echo if not exist "%zielpfad%" (echo  L"schen erfolgreich beendet!) else goto miss>>%temp%\instdel.bat 
08.
echo color 02 >>%temp%\instdel.bat 
09.
echo echo. >>%temp%\instdel.bat 
10.
echo goto end >>%temp%\instdel.bat 
11.
echo :miss >>%temp%\instdel.bat 
12.
echo color 0c >>%temp%\instdel.bat 
13.
echo echo  L"schen fehlgeschlagen! >>%temp%\instdel.bat 
14.
echo :end >>%temp%\instdel.bat 
15.
echo ping -n 6 127.0.0.1 ^> nul >>%temp%\instdel.bat 
16.
echo del /q %%0 ^>nul 2^>nul >>%temp%\instdel.bat 
17.
echo exit >>%temp%\instdel.bat 
18.
start %temp%\instdel.bat 
19.
goto end 
20.
::[...] 
21.
del /q %0
nun das problem hier:
die datei löscht sich zwar,keine reste, aber:
die anzeige:

Batch datei wurde nicht gefunden
C:\>

das muss weg

zudem sollte eine prüfmöglichkeit eröffnet werden, die nachprüft ob die dateien (hauptordner) auch wirklich gelöscht wurde.


aber ich weiß nimmer weiter, helft mir bitte!

grüße, Ph
Mitglied: maneich
14.03.2007 um 18:31 Uhr
Hallo,

wenn Du diese Sache mal ganz logisch betrachtest, ist das doch klar.

Wenn Du innerhalb einer Batch den Ordner löschst in dem die Batch liegt, löschst du ja auch die Batch mit.

Die CMD.EXE oder auch die Command.com wollen diese Batch aber zu Ende führen und finden sie plötzlich nicht mehr, also hagelt es Fehlermeldungen.

Du hast hier 2 Möglichkeiten:

1. Du erstellst in der ausführenden Batch vorher eine Batch außerhalb des zu löschenden Ordners mit dem Löschbefehl und setzt dann in den letzten Zeilen dieser Batch ein

cls
del /y %0>nul
und rufst diese ohne Call auf

und fertig ist das ganze.

2. gleicher Vorgang am Ende Deiner Batch, diese dann kopieren auserhalb des Ordners und
und aufrufen mit dem Parameter der Sprungvariablen.

MfG maneich
Bitte warten ..
Mitglied: Phlegma
14.03.2007 um 19:18 Uhr
hi maneich,

danke für den vortrag, allerdings tritt das auch schon aus meinem post hervor wenn du genau liest... (beachte besonders codestreifen)

es is nur ein bischen komplizierter bei mir...
Bitte warten ..
Mitglied: maneich
15.03.2007 um 00:46 Uhr
Hallo,

nun ja ich habe Deinen Codestreifen schon gelesen und daraus auch mein Urteil gebildet.

Mit cd\ in der 4. Zeile verlegst Du zwar die Ausführung der Batch auf das Drive und mit rd in der 5. Zeile löschst Du den Ordner. Aber

1. Deine Batch liegt physisch immer noch im gelöschten Ordner und der ist weg, also auch Deine Batch.
2. Nach dem löschen des Ordners läuft Deine Batch weiter obwohl sie nicht mehr vorhanden ist.

%0 setzt sich zusammen aus Laufwerk:\Verzeichnispfad\Dateinamen. Der pysische Verzeichnispfad existiert aber nach RD... nicht mehr.

Ergo, mit Cd\... kannst Du zwar die Ausführung einer Batch sonst wohin verlegen, es wird aber von dort immer auf den tatsächlichen Speicherort der Datei zurückgegriffen.

Selbst nachdem Du die Batch mit del /y löschen willst, was ja nicht mehr geht,da der Verzeichnispfad nicht mehr vorhanden ist, hast du noch weitere Zeilen in Deiner Batch angehängt, obwohl normal auch hier die Batch nicht mehr vorhanden ist.

Ein del %0 klappt nur in der letzten Zeile einer Batch, nachdem bereits vorher das Fenster geschlossen wurde. Insbesondere nach RD Order_xyz ist jede weitere Zeile in Deiner Batch sinnlos, da die Batch nicht mehr vorhanden ist.

Du muß also die Batch zum löschen von Verzeichnis und (neuer) Batch schon pysisch mit copy nach außerhalb des Ordners verlegen, wie auch bereits in meinem ersten Thread dargelegt,

MfG maneich
Bitte warten ..
Mitglied: Phlegma
15.03.2007 um 12:36 Uhr
hi,

danke,

beachte bitte dass ich hier die hauptbatch gepostet habe (und auch nur teilweise);
diese liegt im ordner %zielpfad%, spielt keine rolle, normalerweise ist das C:\Programme\XXX...
nun, diese erstellt (wie auch im codestreifen ersichtlich) eine batch im %temp% um den ganzen ordner %zielpfad% zu löschen, weil meine batch sich nicht selbst, und schon gar nicht den ordner mitlöschen kann (sie ist in eine exe convertiert).

also vorgang:
%temp%-batch wird geschrieben
der ping ist dafür dass gewartet wird bis die hauptbatch ausläuft...
das cd\ ist dafür dass die commando zeile sich nichtmehr bei %zielpfad% befindet
dann wird der ordner gelöscht
(bis hierhin keine probleme!) hauptbatch und ordner sind weg

jetzt muss die batch noch prüufen ob alles weg ist, dann meldung machen und schließlich sich selbst löschen und ohne fehlermeldung! zudem sollte das consolenfenster wieder zu gehen!!

ich hoffe du/ihr verstehst nun genau wo mein problem liegt

vielen dank!

Ph
Bitte warten ..
Mitglied: maneich
15.03.2007 um 17:42 Uhr
Hallo,

versuchs mal damit:

echo @echo off >%temp%\instdel.bat
echo title L"schen... >%temp%\instdel.bat
echo ping -n 3 127.0.0.1 ^>nul >>%temp%\instdel.bat
echo cd\ >>%temp%\instdel.bat
echo rd /s /q "%zielpfad%" >>%temp%\instdel.bat
echo echo. >>%temp%\instdel.bat
echo if not exist "%zielpfad%" (echo L"schen erfolgreich beendet!) else goto miss>>%temp%\instdel.bat
echo color 02 >>%temp%\instdel.bat
echo echo. >>%temp%\instdel.bat
echo goto end >>%temp%\instdel.bat
echo :miss >>%temp%\instdel.bat
echo color 0c >>%temp%\instdel.bat
echo echo L"schen fehlgeschlagen! >>%temp%\instdel.bat
echo :end >>%temp%\instdel.bat
echo ping -n 6 127.0.0.1 ^> nul >>%temp%\instdel.bat
echo cls>>%temp%\instdel.bat
echo del /q %%0 ^>nul 2^>nul >>%temp%\instdel.bat
%temp%\instdel.bat

Also das ist Deine Batch, nur am Ende etwas verändert.

Fenster wird vor dem löschen geschlossen, die Batch wird ohne Start aufgerufen.

Die Meldung sowie das offene Fenster kommen vom Interpreter CMD\Command, da die aufgerufene Batch nicht mehr gefunden wird. Die Start.exe kann sich nicht beenden wegen fehlender Batch , deshalb Fehlermeldung und das Fenster wird an den Interpreter übergeben.

Das Prüfen ob Haupordner gelöscht wurde hast Du ja eingebaut nur leider kannst Du das nicht sehen, weil die "pause" fehlt. Es wird zwar den Bruchteil einer Sekunde angezeigt. Deine Augen können dies nicht erfassen.

MfG maneich
Bitte warten ..
Mitglied: Phlegma
15.03.2007 um 18:31 Uhr
hm gut, danke

aber jetzt am ende... wenn ich ohne start aufrufe, öffnet sich kein neues fenster, und ich kann die hautpbatch nicht beenden, da sie unter der neugestarteten läuft..oder nicht?

das cls ist gut!

gruß Ph
Bitte warten ..
Mitglied: maneich
15.03.2007 um 20:42 Uhr
Hallo,

der Aufruf von %temp%\instdel.bat sollte eigentlich die letzte Zeile Deiner Hauptbatch sein; vielleicht danach noch eine Zeile mit cls.

Wenn Du mit Start arbeitest beibst Du ja in der Hauptbatch und diese wird gelöscht. Also ist Start in der Zwickmühle, findet die Datei nicht mehr mit der sie aufgerufen wurde.

Ein Batchaufruf ohne Start oder Call beendet die Hauptbatch und arbeitet die aufgerufene Batch ab. Da das alles schneller abläuft als das neus Fenster geöffnet ist, solltest Du das Fenster theoretisch wenn angezeigt wird löschen erfolgreich bzw. löschen nicht erfolgreich aber dies auch nur dann, wenn du hinter diesen beiden Zeilen eine Zeile mit Pause setzt.

Die Hauptbatch läuft nicht unter der neugestarteten Batch, sie wird mit dieser nur noch gelöscht.

Rufe mal CMD.EXE /? und überprüfe ob der Schalter /C eine eigene Instanz aufruft, die nach dem Ende der Befehle, hier Aufruf von %temp%\instdel.bat, sich selbst schließt. Kann möglicherweise auch ein anderer Schalter sein. Wenn ja und Du so nicht weiterkommst kannst Du es mal mit

cmd.exe /c %temp%\instdel.bat

als letzte Zeile versuchen.

MfG maneich
Bitte warten ..
Mitglied: Phlegma
15.03.2007 um 21:11 Uhr
perfekt!

danke kurz getestet, sollte funktionieren!

vielen dank! Ph
Bitte warten ..
Mitglied: Phlegma
18.03.2007 um 21:03 Uhr
hi, ich melde mich nochmal...
hab extra biber gebeten den thread nochmal zu öffnen...

nun hab allerdings dann doch noch selbst die lösung gefunden

der befehl zum starten muss dann

01.
START CMD /C tempdatei
heißen.

der vorgang sollte dann funktionieren, zumindest hat er das bei mir, wenn die hauptdatei beendet ist bevor die löschung erfolgt.

grüße Ph
Bitte warten ..
Ähnliche Inhalte
Windows Server
Freigegebener Ordner "Eigene Dateien"
gelöst Frage von JensDNDWindows Server8 Kommentare

Hallo Admins, auf unserem Server (WS2012R2) werden die Ordner der einzelnen User unter "Eigene Dateien" freigegeben. nun bekommt ein ...

Batch & Shell
Ordner löschen per Batch
gelöst Frage von MarcysBatch & Shell3 Kommentare

Hallo, Ich möchte aus einem Verzeichnis einen den Ordner "MC" löschen: C:\Programme\HYP\MC Dies möchte ich per Batch machen. Wie ...

Batch & Shell
Dateien (keine Ordner) löschen die älter sind als
gelöst Frage von siziigilendirmezBatch & Shell4 Kommentare

Guten Morgen ich möchte gerne mit einer power Shell Dateien löschen die älter als 30 tage sind. Die Dateien ...

Windows 10
Löschen von Ordner mit Dateien
Frage von jerry32Windows 103 Kommentare

Hallo, ich hatte vor kurzem einen sehr kuriosen Fall Es befanden sich 2 Dateien in einem Ordner von denen ...

Neue Wissensbeiträge
Perl

Perl hat heute Geburtstag: 30 Jahre Perl: Lange Gesichter zum Geburtstag

Information von Penny.Cilin vor 5 StundenPerl2 Kommentare

Hallo, auch wenn es wenige wissen und noch weniger Leute es nutzen. Perl hat heute Geburtstag. 30 Jahre Perl ...

Sicherheit

Blackberry stirbt - Keine Updates für Priv mehr

Tipp von certifiedit.net vor 6 StundenSicherheit

Blackberry wird zu einer 08/15 Firma und geht wohl mehr und mehr den Weg, den HTC schon ging. Von ...

Windows 10

Autsch: Microsoft bündelt Windows 10 mit unsicherer Passwort-Manager-App

Tipp von kgborn vor 2 TagenWindows 1010 Kommentare

Unter Microsofts Windows 10 haben Endbenutzer keine Kontrolle mehr, was Microsoft an Apps auf dem Betriebssystem installiert (die Windows ...

Sicherheits-Tools

Achtung: Sicherheitslücke im FortiClient VPN-Client

Tipp von kgborn vor 2 TagenSicherheits-Tools

Ich weiß nicht, wie häufig die NextGeneration Endpoint Protection-Lösung von Fortinet in deutschen Unternehmen eingesetzt wird. An dieser Stelle ...

Heiß diskutierte Inhalte
Batch & Shell
Kann man mit einer .txt Datei eine .bat Datei öffnen?
gelöst Frage von HelloWorldBatch & Shell22 Kommentare

Wie schon im Titel beschrieben würde ich gerne durch einfaches klicken auf eine Text oder Word Datei eine Batch ...

Netzwerkgrundlagen
Belibiges Teilnetz einer Subnetzmaske rausfinden?
gelöst Frage von CenuzeNetzwerkgrundlagen17 Kommentare

Wundervollen Gutentag, mittlerweile kann ich Subnetting so einigermaßen, aber ein Problem habe ich noch. Netzwerkadresse und Boradcast errechnen ist ...

LAN, WAN, Wireless
WLAN Reichweite erhöhen mit neuer Antenne
gelöst Frage von gdconsultLAN, WAN, Wireless12 Kommentare

Hallo, ich besitze einen TL-WN722N USB-WLAN Dongle mit einer richtigen Antenne. Ich frage mich jetzt ob man die Reichweite ...

Windows Server
Logging von "gesendeten Nachrichten" auf Terminalservern
gelöst Frage von Z3R0C0MM4N0THiN6Windows Server10 Kommentare

Hallo zusammen, kann mir jemand auf kurzem Wege sagen ob 1) die per Task-Manager (oder damals tsadmin) an Benutzer ...