Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

Batch-File Parameter übergeben

Empfohlene Antworten

Veröffentlicht

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

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

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

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

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:

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

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

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

es geht eigentlich nur um den loop :)

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.

ok, danke ich werde es mal versuchen :)

ginge das auch einfacher?

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?

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

ok, danke!

  • 3 Wochen später...

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]

)

Archiv

Dieses Thema wurde archiviert und kann nicht mehr beantwortet werden.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.