Zum Inhalt springen

Wenn Inhalt in Ordner nicht vorhanden, Ordner löschen


TiKa

Empfohlene Beiträge

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

Link zu diesem Kommentar
Auf anderen Seiten teilen

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:

Link zu diesem Kommentar
Auf anderen Seiten teilen

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

Link zu diesem Kommentar
Auf anderen Seiten teilen

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.

Link zu diesem Kommentar
Auf anderen Seiten teilen

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