Spezielles bat-command gesucht

Status
Für weitere Antworten geschlossen.
Ja. Aber nochmal, mach Dir keine grosse Mühe. Es lohnt nur, wenn es ganz einfach geht. Mehr ist die Sache nicht wert.
 
EDIT: Habs falsch verstanden.
Das vorherige Script nicht verwenden, es löscht die Dateien aus dem Hauptordner nicht sondern aus den Unterordnern wenn diese schon im Hauptordner vorhanden sind.

Das hier sollte gehen. Das schaut ob Dateien in Unterordnern vorhanden sind und löscht die dann aus dem Hauptordner.

Code:
@echo off
SETLOCAL enabledelayedexpansion
REM Pfad zum Hauptordner (WICHTIG: Kein Backslash am Ende!)
SET "HAUPTORDNER=D:\ORDNERNAME"
echo Starte Bereinigung des Hauptordners: %HAUPTORDNER%
echo --------------------------------------------------
REM /R durchsucht rekursiv alle Unterordner und /D sucht nach Verzeichnissen (wir springen in die Unterordner)
FOR /R "%HAUPTORDNER%" %%D in (.) do ( 
REM Sicherstellen, dass wir nicht den Hauptordner selbst als Unterordner verarbeiten
IF /I not "%%~fD"=="%HAUPTORDNER%" (         
REM Schleife durchsucht alle Dateien im aktuellen Unterordner 
FOR %%F in ("%%~fD\*") do (     
SET "DATEINAME=%%~nxF"                 
REM Prüfen, ob diese Datei auch direkt im Hauptordner existiert     
IF EXIST "%HAUPTORDNER%\!DATEINAME!" (        
echo Duplikat gefunden! Loesche aus Hauptordner: !DATEINAME!                         
REM Loescht die Datei direkt im Hauptordner (/Q = ohne Nachfrage, /F = trotz Schreibschutz)         
DEL /Q /F "%HAUPTORDNER%\!DATEINAME!"            )        )    ))
echo --------------------------------------------------
echo Bereinigung abgeschlossen!

Wichtig: Die Datei in den Hauptordner kopieren und da ausführen. Vorher hier:
SET "HAUPTORDNER=D:\ORDNERNAME"
Den Namen deines Ordner in dem die Unterordner sind eintragen.
 
Zuletzt bearbeitet:
@D0m1n4t0r Das war auch mein erster Entwurf. Aber @Samun meint es anders rum.. Wenn die Datei im Unterordner vorkommt soll sie im Hauptordner gelöscht werden.

@Samun hab dir noch ne Exe geschickt.
 
Das hört sich nach einer Aufgabe für ein klassisches Tool zur Entfernung doppelter Dateien an. Gibt doch etliche Programme die "dedup" (deduplicate) machen können und wo man wählen kann welche Datei man behalten möchte.

Selbst robocopy kann Dateien von A nach B kopieren und dann in A löschen. Sollte das Flag /move sein.

Ansonsten: Tools wie AllDup listen alle Duplikate und man kann dann angeben was mit diesen passieren soll. z.B. "alle Duplikate in Ordner A behalten und in B löschen". Und das ist doch hier gewünscht oder?
 
  • Gefällt mir
Reaktionen: User007 und nutrix
Eine KI baut das ruck zuck. Du musst nur lernen dich klar auszudrücken.
 
  • Gefällt mir
Reaktionen: Geckoo, nutrix und Drewkev
Das meinte ich eingangs ja, sowas ist imho ein ganz klassisches Problem um es auf ein LLM zu werfen. Heisst nicht, dass es dann direkt funktioniert, aber LLM's sind tatsächlich ziemlich gut darin selbst wirren Gedankengängen folgen zu können. Und da sie die Eigenheit haben das alles nochmals in eigenen Worten sauber zu formulieren was sie verstanden haben (was sie auch recht gut können - die heissen ja nicht ohne Grund Sprachmodelle) hat man meist auch schnell ein direktes Feedback, ob man richtig verstanden wurde.

Wichtig ist dabei nur zu verstehen was (im script) passiert - insbesondere wenn man das script auf die eigenen Daten loslässt (Idealerweise hat man für sowas Testdaten bzw. eben ein Backup. Aber das gilt ja genauso für eigenständiges Programmieren).
Und auch hier sind LLMs super, die können dir jeden Schritt genau erklären - so kann man auch schnell und effektiv dazu lernen.
 
Hi...

Samun schrieb:
[...] wenn es ganz einfach geht.
Dann nutz' einen Datei-Manager, wie bspw. TotalCommander, denn für solche Aufgaben sind die auch mit entsprechenden Funktionen für das Finden und Beseitigen von Duplikaten ausgestattet.
Wieso das "Rad neu erfinden"? 🤷‍♂️​
 
  • Gefällt mir
Reaktionen: Snapuman und TomTDooley
@User007

Die Frage ist auch was länger dauert? Die Suche nach einer Antwort im Internet oder das manuelle Aufräumen, auch wenn es lästig ist.
 
TomTDooley schrieb:
[...] das manuelle Aufräumen, [...]
Na ja, ich bezweifel', dass das wirklich "länger" dauert, selbst wenn man mit einem noch eher unbekannten Tool (Hilfsmittel) umgeht, das sich jedoch durchaus auch für allerweitig andere Dateimanagement-Aufgaben als nützlich erweisen könnte - es gibt doch heutzutage für fast alles i-welche (Video)Anleitungen/Beschreibungen zu finden, allerdings müßte man sich halt auch mal selbst damit auseinander setzen! 🤷‍♂️
Aber Delegation von allem scheint ja das neue Lebenselixier der heutigen Zeit zu sein - sch**ß auf Selbstständigkeit. 🤨​
 
  • Gefällt mir
Reaktionen: TomTDooley
@User007

Das war auch mein Denkansatz.
Das wollen wir nicht weiter vertiefen, bevor da mit dem ein oder anderen wieder eine Dauerdiskussion entsteht.


Das könnte auch Generationsabhängig sein.
 
  • Gefällt mir
Reaktionen: User007
Ich versuche mal, soweit ich es verstanden habe, für dich zu formulieren:

  • Du hast alle einige in Unterordner sortierten Datein in das Stammverzeichnis kopiert
  • Du möchtest dies rückgängig machen.
  • Du möchtest sicherstellen, dass nur gelöscht wird wenn die Datei im Stammverzeichnis in einem Unterordner noch vorhanden ist.

Kommt das hin?
 
Nas ich hab dem TE ein kleines Tool programmiert das genau das macht, aber wie leider so oft hier bekomt man nicht mal eine Rückmeldung ob es das tut was gesucht wurde.
 
  • Gefällt mir
Reaktionen: Snapuman und Micha-
Merlin352 schrieb:
[...] wie leider so oft hier bekomt man nicht mal eine Rückmeldung [...]
Ach bitte... der Thread is' noch keine 24 Stunden alt und wie man sehen kann, war der TE zuletzt um kurz nach Eins heut' morgen hier anwesend - es soll tatsächlich Menschen geben, die, obwohl sie Unterstützung suchen, dennoch nicht 24/7 vor der Kiste hängen und auch anderes Wichtiges in ihrem Leben zu tun haben. 🤷‍♂️
Sorry, aber ich vermisse hier auch so oft mal etwas (mehr) Geduld von den Hilfswilligen - das is' doch kein Wettbewerb! 🤨​
 
  • Gefällt mir
Reaktionen: Snapuman
User007 schrieb:
Ach bitte... der Thread is' noch keine 24 Stunden alt und wie man sehen kann, war der TE zuletzt um kurz nach Eins heut' morgen hier anwesend - es soll tatsächlich Menschen geben, die, obwohl sie Unterstützung suchen, dennoch nicht 24/7 vor der Kiste hängen und auch anderes Wichtiges in ihrem Leben zu tun haben. 🤷‍♂️
Sorry, aber ich vermisse hier auch so oft mal etwas (mehr) Geduld von den Hilfswilligen - das is' doch kein Wettbewerb! 🤨​

Das ist in meinem Fall oft leider Krankheit. Ich habe mehrfach versucht mich damit zu befassen, werde nach zehn Minuten müde und muss innerhalb von zwei Minuten abbrechen und mich hinlegen. So kann man auch schonmal ganze Nächte verbringen. Jetzt gerade gehts. Es ist ja auch gerade erst kurz nach drei. (hust) Aber das ist auch keine Entschuldigung, ich hätte was sagen müssen. Also, generell: Danke an alle für die Mühe.

Ich habe es inzwischen gelöst. Ich kann es kaum glauben, aber ich habe einfach "mache mir eine bat-datei, die Dateien, die in einem Unterordner liegen, aus dem Hauptordner löscht, aber keine festen Adressdaten hat" gegoogelt. Und er hat mir das Script ausgespuckt. Ähm.... ich werde es unten posten.

Egal, ich habe mir erstmal hier alles angeschaut. Das ist also nicht mehr aktuell, aber ich lasse es mal stehen :)

D0m1n4t0r schrieb:
Wichtig: Die Datei in den Hauptordner kopieren und da ausführen. Vorher hier:

Das funktioniert super, aber dann müsste ich 150 Adressen eintragen, was mehr Arbeit macht als alles manuell zu löschen. Ich habe aber versucht das ganze mit ".\A" zu testen. Meine Idee war, dass ich den Inhalt des Hauptordners temporär in einen Unterordner A move und den zu löschenden Inhalt in einen Unterordner B, der in A liegt. Also: Hauptordner --> SubfolderA --> SubfolderB

Wenn ich vom echten Hauptordner aus Dein Script ausführe mit HAUPTORDNER=.\A, dann wird leider alles gelöscht. Hast Du da eine Idee? Denn sonst funktioniert es. Die reale Verzeichnisstruktur ist ja egal, ich kann temporär alles herumschieben bis es aufs Script passt. Es wird danach dann wieder zurückgeschoben.

Ich habe Scripte, mit denen ich bat-Dateien in alle Ordner einfügen und auf Knopfdruck automatisch ausführen kann. Dauert drei Sekunden und alles ist erledigt. Ich glaube ich habe beide sogar von hier? Ich habe die sehr oft benutzt und dafür bin ich auch echt dankbar. Heisst: Ich kann mit bat-Dateien auch in mehreren Schritten arbeiten.

User007 schrieb:
Aber Delegation von allem scheint ja das neue Lebenselixier der heutigen Zeit zu sein - sch**ß auf Selbstständigkeit. 🤨​

Autsch, der hat weh getan. Das wovon ihr da redet, mag mag komplett Sinn machen, aber bei mir reichen die mentalen Kapazitäten nicht mehr, um so abstrakt zu denken, dass ich hier grossartig neue kommandos lerne.

Ich habe allerdings auch gesagt, dass sich keiner Mühe machen muss. Ich hatte gehofft, dass es simple Befehle gibt, die ich nicht kenne oder dass man mir sagt "Ja, aber kompliziert" und dann hätten wir das beenden können.

Merlin352 schrieb:
hab dir noch ne Exe geschickt.

Ich würde gerne die Exe testen, aber... wo ist die? Ich finde keinen Anhang in Deinen Posts, nichts in meinen PMs hier im Forum und an meine email hast Du es auch nicht geschickt. Wo liegt mein Fehler? (Problem ist gelöst, aber ich würde die total gerne ausprobieren)

So, hier die Lösung.


setlocal enabledelayedexpansion

:: Name des Unterordners hier definieren (ohne Pfade)
set "SUBFOLDER=a"


:: Wechselt in das Verzeichnis, in dem die Batch-Datei liegt
cd /d "%~dp0"

:: Liest jede Datei aus dem Unterordner und loescht sie aus dem Hauptordner
for %%F in ("%SUBFOLDER%\*") do (
if exist "%%~nxF" (
del "%%~nxF"
echo Geloescht: %%~nxF
)
)

Ich kann also hier in eine bat-Datei einfach den Namen des Subfolders eingeben (a), die Datei wird dann mit einem anderen Script verteilt und ausgeführt. Wird drei Sekunden dauern. Ich kann es kaum fassen
 
Zuletzt bearbeitet:
Samun schrieb:
Autsch, der hat weh getan.
Na ja, es kommt ja auf Dich an, wie Du das an Dich ran lässt bzw. auf Dich selbst beziehst und in so speziellen gesundheitsbelasteten Lebenslagen sollte man doch eh ein etwas anderes mit zum Selbstschutz mehr Abstand versehenes Persönlichkeitsverhältnis pflegen - es war von mir auch eher allgemeingesellschaftlich gemeint.​
Samun schrieb:
Das was ihr da vorschlagt mag komplett Sinn machen, aber das werde ich im Leben nicht mehr lernen. Die mentalen Kapazitäten reichen nicht mehr.
Ok, das ist eine völlig akzeptable Erklärung für meine durchaus implizierende Frage aus meinem ersten Beitrag und dahingehend ist dann eine "One-Klick"-Lösung, wie mit der ausführbaren Datei angeboten, durchaus die wohl eher anzustrebende Lösung!
Mir wär' das heutzutage zu mühselig mit einzelnen Kommandos in der Befehlszeile zu hantieren, zumal ich doch des Öfteren Datei-/Ordner-Managementaufgaben abarbeite - da ist ein Tool, das (fast) alle Funktionalitäten in sich vereint und sogar mit seiner GUI an den altehrwührdigen Norton Commander erinnert, praktischer. Aber selbstverständlich jedem, was er braucht und womit er klar kommt. 😉

Das Anhängen einer EXE-Datei an ein Posting wird vermutlich durch die Foren-Software verhindert - die sollte wohl mind. gepackt (und evtl. verschlüsselt) sein, um sie hier durchaus auch für andere nutzbar zur Verfügung zu stellen.​
 
Zuletzt bearbeitet:
User007 schrieb:
Das Anhängen einer EXE-Datei an ein Posting wird vermutlich durch die Foren-Software verhindert - die sollte wohl mind. gepackt (und evtl. verschlüsselt) sein, um sie hier durchaus auch für andere nutzbar zur Verfügung zu stellen.​

Gut, da muss er nochmal schauen. Ich werde mir die Exe auf jeden Fall mit Interesse anschauen und das Ergebnis mitteilen.

Ich hatte Deine Bemerkung auch nicht als Angriff gesehen, aber wahr ist, dass ich darauf hätte hinweisen können, dass das bei mir ein bisschen dauern kann. Du hast übrigens auf eine nicht mehr aktuelle Version des Postings geantwortet, ich habe da noch ein bisschen rumeditiert. Du bist auch ganz schön früh auf ;)
 
  • Gefällt mir
Reaktionen: User007
Hmm, ich muß gestehen, dass ich etwas verwundert bin - ist im Script
Bash:
setlocal enabledelayedexpansion

:: Name des Unterordners hier definieren (ohne Pfade)
set "SUBFOLDER=a"


:: Wechselt in das Verzeichnis, in dem die Batch-Datei liegt
cd /d "%~dp0"

:: Liest jede Datei aus dem Unterordner und loescht sie aus dem Hauptordner
for %%F in ("%SUBFOLDER%\*") do (
if exist "%%~nxF" (
del "%%~nxF"
echo Geloescht: %%~nxF
)
)
nicht das einzelne Definieren der Unterordner genau das, was Du hier erwähnt
Samun schrieb:
[...] aber dann müsste ich 150 Adressen eintragen, was mehr Arbeit macht als alles manuell zu löschen.
vermeiden wolltest?
 
Nein, die Hauptordner haben alle unterschiedliche Namen, aber darunter liegt die immer gleiche Ordnerstruktur. Das bedeutet, in jedem der Hauptordner liegt ein Ordner "a".

Es gibt hier am Ende nur eine einzige Bat-Datei, in der immer steht, dass man in einem Unterordner a schauen soll, und dann diese Dateien aus dem Pfad darüber löschen soll.

Mit einem Script kann ich diese einzelne bat-Datei in einer Gazillion Ordner verteilen, egal wie die heissen. Und von da aus kann ich sie automatisch ausführen.
 
Status
Für weitere Antworten geschlossen.
Zurück
Oben