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.

Wenn Inhalt in Ordner nicht vorhanden, Ordner löschen

Empfohlene Antworten

Veröffentlicht

Hallo, vielleicht kann mir Jemand weiterhelfen,

Ich bin schon seit einigen Tagen am suchen und rumprobieren. Ich möchte in einer Batch-Datei einen Ordner überprüfen lassen, ob in diesem Dateien vorhanden sind oder nicht. Wenn keine Dateien vorhanden sind, soll der Ordner gelöscht und das Programm beendet werden. Wenn Dateien vorhanden sind, soll das Programm weiter ausgeführt werden.


@echo 


set jahr=%date:~-4%

set monat=%date:~-7,2%

set tag=%date:~-10,2%


set stunde=%time:~0,2%

set minute=%time:~3,2%

set sekunde=%time:~6,2%


xcopy \\netapp01\%jahr%.%monat%.%tag%\*.* c:\%jahr%.%monat%.%tag%\*.* /S /E /C /H /R /Y /V


if not exist "C:\%jahr%.%monat%.%tag%\*.*" (goto delete)


:delete

rmdir C:\%jahr%.%monat%.%tag% /s /q

goto ende


if exist "C:\%jahr%.%monat%.%tag%" (goto weiter)


:weiter

...

...

Nach meinen Tests denke ich, dass das Problem
if not exist "C:\%jahr%.%monat%.%tag%\*.*" (goto delete)

daran liegt, entweder ist die If-Anweisung falsch, oder die Prüfung, ob Dateien im Ordner vorhanden sind oder nicht. Liegt es an "*.*", gabt es da eventuell andere Zeichen oder ist mein Code komplett falsch??

Über eure Hilfe und Beiträge würde ich mich sehr freuen,

LG TiKa

hmtja... also ich glaube da stimmt was mit der Reihenfolge nicht: If XYZ goto Delete und danach direkt die Delete-Klausel? Da kannst du dir den goto-Befehl komplett verkneifen. Der wird nämlich ausgeführt ob das if nun besteht oder nicht. Ohne jetzt den Rest kontrolliert zu haben würde ich das eher so schreiben:


if not exist "C:\%jahr%.%monat%.%tag%\*.*" goto delete


if exist "C:\%jahr%.%monat%.%tag%" goto weiter


goto ende

:delete

rmdir C:\%jahr%.%monat%.%tag% /s /q

goto ende

:weiter

...

...

:ende

exit

Das sollte der Lösung schon näher kommen. Immer dran denken: Wenn eine Zeile abgehandelt wurde, kommt immer die danach folgende. Also einen If-Goto sollte immer ein anderer Pasus folgen als das ziel des Goto-Befehls, weil sonst das If überflüssig ist... Ich hab jetzt nen Knoten im Hirn :floet:

Oooooookey, vielen Dank erst mal, stimmt, da hätte ich mir Goto verkneifen können.

Ich habe folgenden Code gefunden und ausprobiert, und es funktioniert einwandfrei!

if exist "c:\%jahr%.%monat%.%tag%" dir /b /A:-d "c:\%jahr%.%monat%.%tag%">nul 2>nul ||  (goto delete)

if exist "c:\%jahr%.%monat%.%tag%" dir /b /A:-d "c:\%jahr%.%monat%.%tag%">nul 2>nul &&  (goto weiter)

Dass es funktioniert ist echt super, nur verstehe ich die Vorgehensweiße dieser Zeilen nicht ganz, was das Programm genau mit den größer/kleiner Zeichen macht und welche Rolle Nul dabei spielt.

Und ich finde es immer noch komisch, dass es damit \*.* nicht funktioniert hat... :-(

Hat vielleicht Jemand eine Erklärung dafür??

LG's TiKa

das >nul und 2>nul sorgt nur dafür das die Ausgabe und die Fehlerausgabe von "dir /b..." nicht auf der Konsole ausgegeben wird. die || sind für die Bedingte Befehlsverkettung. Wird also nur ausgeführt wenn der erste Befehl fehlschlug. Bei && wird der zweite nur ausgeführt, wenn der erste auch ausgeführt werden konnte.

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.