Zum Inhalt springen

Empfohlene Beiträge

Geschrieben (bearbeitet)

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 von JasonLief
zusätzliche bitte
Geschrieben

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 ... ...

Geschrieben
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

Geschrieben

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).

Geschrieben
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:

Geschrieben

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...

Geschrieben
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

Geschrieben

@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 (

Geschrieben

Die Schleife spaltet die Dateien aus dem dir-Befehl in den eigentlichen Dateinamen (%a) und die Dateiendung auf (%B) 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.

Geschrieben

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

  • 3 Wochen später...
Geschrieben

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]

)

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...