Veröffentlicht 27. Mai 201015 j Hallo Board-Users Ich habe 'ne Frage und zwar will ich ein Batch-File schreiben, welches mir Dateien löscht. Das ganze sieht wie folgt aus. Ich habe in mehreren Ordner Files, mit speziellen Endungen. Ordner - File1.xml.abc - File2.xml.def - File3.xml.ghi jetzt will ich ein File schreiben, wo ich definiere wo die Files zu finden sind(mit dynamischen Pfaden) und die Befehle welche die Dateien löscht. und in einem anderen File, welche Dateitypen gelöscht werden müssen, welches dann das andere aufruft und einen Parameter übergibt. Also sollte ich dann nur noch dieses File aufrufen müssen, und dies gibt nacher z.B abc mit Hoffe es hat sich alles geklärt, sonst fragt bitte. Kann mir jemand sagen, wie ich dies lösen kann :confused: Danke für die folgenden Antworten Bearbeitet 27. Mai 201015 j von JasonLief zusätzliche bitte
28. Mai 201015 j wenn du eine bat datei mit einem Paratmeter aufrufst, zum Beispiel: ofen.bat insertcookie dann kannst du in der ofen.bat mit %1 auf diesen Parameter zugreifen. Und auf jeden weiteren mit %2, %3 ... ...
31. Mai 201015 j wenn du eine bat datei mit einem Paratmeter aufrufst, zum Beispiel: ofen.bat insertcookie dann kannst du in der ofen.bat mit %1 auf diesen Parameter zugreifen. Und auf jeden weiteren mit %2, %3 ... ... Danke danke Jetzt noch eine Frage Ich will ein Loop machen, welcher nachschaut ob der Filename einen solchen parameter beinhaltet. Also irgendwie: If not Dateiname= %1*.* dann löschen Danke für die Antworten
31. Mai 201015 j Du kannst ein einfaches dir /B %1% in deine Batchdatei einbauen und dann die Variable %errorlevel% überprüfen. Die dir dann darüber Auskunft gibt, ob Dateien vorhanden sind (Wert von %errorlevel% ist 0) oder eben nicht (Wert gleich 1).
31. Mai 201015 j Du kannst ein einfaches dir /B %1% in deine Batchdatei einbauen und dann die Variable %errorlevel% überprüfen. Die dir dann darüber Auskunft gibt, ob Dateien vorhanden sind (Wert von %errorlevel% ist 0) oder eben nicht (Wert gleich 1). ich weiss das Dateien vorhanden sind. nur muss ich wissen wie kann ich dateien löschen mit ausnahme. also z.B Ordner: Abc.xls test.xls testblabla.exe Alle dateien löschen ausser die dateien die test enthalten :confused:
31. Mai 201015 j Bau dir eine Schleife, dir für jede zu löschende Datei überprüft, ob diese nicht in der Ausnahmenliste steht. Fuer jede Datei in C:\ DateiLoeschen = true Fuer jeden Dateinamen in C:\ausnahmeliste.txt Wenn Datei gleich Dateinamen DateiLoeschen = false Setze Dateinamen auf naechsten Dateinamen Wenn DateiLoeschen == true dann Datei löschen Setze Datei auf naechste Datei So in der Art...
31. Mai 201015 j Bau dir eine Schleife, dir für jede zu löschende Datei überprüft, ob diese nicht in der Ausnahmenliste steht. Fuer jede Datei in C:\ DateiLoeschen = true Fuer jeden Dateinamen in C:\ausnahmeliste.txt Wenn Datei gleich Dateinamen DateiLoeschen = false Setze Dateinamen auf naechsten Dateinamen Wenn DateiLoeschen == true dann Datei löschen Setze Datei auf naechste Datei So in der Art... ja genau, bräuchte nur ein wenig hilfe dabei, weil ich ziemlich wenig ahnug habe von Batch :S habe ein beispiel script, aber mit den variabeln und "\b" oder ":" blick ich nicht so ganz durch
1. Juni 201015 j @echo off echo. echo == BEREINIGEN EINES ORDNERS == rem Mehr Output rem [true] = Ausgabe zusätzlicher Zeilen rem [false] = Minimale Ausgabe set debugmode=false rem Verzeichnis in welchem die Dateien geloescht werden sollen set delpathLayout=..\ rem nicht zulöschende Files definieren set skipfile1=%1 set skipfile2= set skipfile3= @echo. @echo Dateien loeschen... for /f "usebackq tokens=1,2 delims=." %%a in (`dir %delpathLayout% /a:-d /b`) do ( if '%debugmode%' == 'true' ( @echo "[----------------------------------------]" @echo Pruefe: '%delpathLayout%\%%a.%%b' [Endung: %%b] ) if not '%%b' == '%skipfile1%' ( if not '%%b' == '%skipfile2%' ( if not '%%b' == '%skipfile3%' ( @echo [LOESCHEN] '%delpathLayout%\%%a.%%b' Entferne REM vor erase zum ENTGÜLTIGEN löschen erase %delpathLayout%\%%a.%%%b ) ELSE ( if '%debugmode%' == 'true' ( @echo [IGNORE] Dateiendung [%skipfile3%] ) ) ) ELSE ( if '%debugmode%' == 'true' ( @echo [IGNORE] Dateiendung [%skipfile2%] ) ) ) ELSE ( if '%debugmode%' == 'true' ( @echo [IGNORE] Dateiendung [%skipfile1%] ) ) ) rem Setvariablen aufloesen set delpathLayout= set debugmode= set skipfile1= set skipfile2= set skipfile3= echo. echo ABGESCHLOSSEN ! das mit diesen "%" kapier ich ned so ganz, und: for /f "usebackq tokens=1,2 delims=." %%a in (`dir %delpathLayout% /a:-d /b`) do (
1. Juni 201015 j Die Schleife spaltet die Dateien aus dem dir-Befehl in den eigentlichen Dateinamen (%a) und die Dateiendung auf (% auf. In der Schleife wird dann geschaut, ob die Dateiendung von der aktuellen Datei als "skipfile" deklariert wurde. Wenn das der Fall ist, wird die Datei nicht gelöscht.
1. Juni 201015 j nein. hat sich geklärt! Aber noch die letzte Frage: Ich habe eine Datei xyz.xml.abc Ich will nun das abc auslesen, sprich die 2. Endung. Wie kann ich das?
1. Juni 201015 j Die Token in der FOR-Schleife anpassen. for /f "usebackq tokens=1,2,3 delims=." %%a in (`dir %delpathLayout% /a:-d /b`) do ... %%a ist der Dateiname %%b die Zeichenkette nach dem ersten Punkt %%c die eigentliche Dateiendung
21. Juni 201015 j Ich sollte nun auch noch ordner löschen, aber mit dem loop: for /f "usebackq tokens=1,2,3 delims=." %%a in (`dir %delpathLayout% /a:-d /b`) do ... kann ich die ordner nicht ansprechen oder auslesen. Wie kann ich nun ein directory, bei welchem ich ordner löschen muss, die ansprechen? Also: If not [ordnername] == nichtzulöschender Ordner ( lösche [ordnername] )
21. Juni 201015 j Weil der Befehlsparameter "/a:-d" angibt, dass keine Verzeichnisse aufgelistet werden bzw. in %%a geschrieben werden sollen.
Archiv
Dieses Thema wurde archiviert und kann nicht mehr beantwortet werden.