Batch Datei um Ordner zu suchen und Inhalt löschen
Batch im Netzwerk verwenden.
Bestimmte Ordner suchen und deren Inhalt löschen
Hallo zusammen,
folgendes Problem.
Wir arbeiten mit Autodesl Inventor 2010, welches von jedem Bauteil in einer definierten Ordnerstruktur, Sicherungskopien anlegt.
Die Sicherungsdatein befindem sich im Netzwerk und nicht lokal.
Da eine Maschine, als Beispiel aus mehreren Bauteilen besteht, habe ich entsprechend verschiedene Ordner:
Beispiel:
\\Netzlaufwerk\Haputordner\Projekt\Auto\Karosserie\Backup
\\Netzlaufwerk\Haputordner\Projekt\Auto\Motor\Backup
\\Netzlaufwerk\Haputordner\Projekt\Auto\Auspuff\Backup
\\Netzlaufwerk\Haputordner\Projekt\Auto\Getriebe\Backup
Ich möchte gerne einen Batch schreiben, welcher NUR den Ordner "BACKUP" sucht (auf einem Netzlaufwerk, und NUR den Inhalt löscht.
Angefangen habe ich hiermit, komme aber nicht weiter, da Syntax falsch
for %I IN (I:\\dat1002\m-kon\*) DO echo del %I\Old Versions\*.bak
Zur Definition:
I ==> Netzwerkpfad
\\dat1002\m-kon ==> Freigegebenes Verzeichnis
Old Versions ==> der zu suchende Ordner
Syntax ist falsch und ich häng, jemand eine Idee?
Bestimmte Ordner suchen und deren Inhalt löschen
Hallo zusammen,
folgendes Problem.
Wir arbeiten mit Autodesl Inventor 2010, welches von jedem Bauteil in einer definierten Ordnerstruktur, Sicherungskopien anlegt.
Die Sicherungsdatein befindem sich im Netzwerk und nicht lokal.
Da eine Maschine, als Beispiel aus mehreren Bauteilen besteht, habe ich entsprechend verschiedene Ordner:
Beispiel:
\\Netzlaufwerk\Haputordner\Projekt\Auto\Karosserie\Backup
\\Netzlaufwerk\Haputordner\Projekt\Auto\Motor\Backup
\\Netzlaufwerk\Haputordner\Projekt\Auto\Auspuff\Backup
\\Netzlaufwerk\Haputordner\Projekt\Auto\Getriebe\Backup
Ich möchte gerne einen Batch schreiben, welcher NUR den Ordner "BACKUP" sucht (auf einem Netzlaufwerk, und NUR den Inhalt löscht.
Angefangen habe ich hiermit, komme aber nicht weiter, da Syntax falsch
for %I IN (I:\\dat1002\m-kon\*) DO echo del %I\Old Versions\*.bak
Zur Definition:
I ==> Netzwerkpfad
\\dat1002\m-kon ==> Freigegebenes Verzeichnis
Old Versions ==> der zu suchende Ordner
Syntax ist falsch und ich häng, jemand eine Idee?
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 170812
Url: https://administrator.de/contentid/170812
Ausgedruckt am: 05.11.2024 um 10:11 Uhr
24 Kommentare
Neuester Kommentar
Moin,
passt auch nicht wirklich zusammen...
unhybsche variante:
Spiel damit mal etwas herum
Gruß
- Batch macht genau dass, was du Ihm vorschreibst.
\\Netzlaufwerk\Haputordner\Projekt\Auto\Karosserie\Backup
ist also schonmal ganz daneben Hauptordner?Ich möchte gerne einen Batch schreiben, welcher NUR den Ordner "BACKUP" sucht
DO echo del %I\Old Versions\*.bak
DO echo del %I\Old Versions\*.bak
passt auch nicht wirklich zusammen...
unhybsche variante:
for /r \\Netzlaufwerk\Hauptordner\Projekt\ %a in (.bak) do @echo %~dpa|find /I "BACKUP" && @echo del %~dpa\*.*
Spiel damit mal etwas herum
- FOR /?
Gruß
Aloha T-Mo,
hm, da
Lustig finde ich auch, dass deine Variante
länger dauert als diese:
Habe ich mal auf meine Verzeichnisse angepasst, weil mich mal die Ablaufzeit interessiert hat ^_^
greetz André
hm, da
%~dpa
bereits einen Backslash enthält, wird der doppelte u.U. Probleme bereiten XP kann das, glaube ich, ab aber Win 7 muckt dort.Lustig finde ich auch, dass deine Variante
@for /r "E:\Skripte" %a in (.bak) do @echo %~dpa|find /I "BACKUP" && @echo del %~dpa\*.*
@for /f "delims=" %s in ('dir /ad /b /s "E:\Skripte"^|findstr /i /e "\Backup"') do @for /f "delims=" %m in ('dir /a-d /b /s "%~s\*.bak"') do @echo del "%~m"
Habe ich mal auf meine Verzeichnisse angepasst, weil mich mal die Ablaufzeit interessiert hat ^_^
greetz André
Salve André,
nunja - ich bin grade erst aus dem Urlaub und auf die Arktischen Temperaturen knapp der 30° hab ich mich noch nicht eingestellt
Da kommt ja "der" Ordner, (ein .), der Übergeordnete Ordner (zwei..) und evtl unterordner.
Du weißt ja, manchmal aber nur manchmal ist der kürzeste Gedankenweg der längere
Gruß
edit
wobei der da
nochmal etwas schneller wäre, aber genausoviele Treffer hat?
Ich vermute, der Biber hat den kühleren Kopf und kommt heute im laufe des Tages aus seinem Bau geschwommen und erklärt uns das genauer
</edit>
nunja - ich bin grade erst aus dem Urlaub und auf die Arktischen Temperaturen knapp der 30° hab ich mich noch nicht eingestellt
- ich schrub ja unhybsch, wobei man ein minimales Tuning auch durch (.) statt (.cmd) erreichen kann.
for /r E:\Skripte %a in (.) do @echo %~dpa
Da kommt ja "der" Ordner, (ein .), der Übergeordnete Ordner (zwei..) und evtl unterordner.
Du weißt ja, manchmal aber nur manchmal ist der kürzeste Gedankenweg der längere
Gruß
edit
wobei der da
for /r E:\Skripte %a in (. ) do @echo %~dpa
Ich vermute, der Biber hat den kühleren Kopf und kommt heute im laufe des Tages aus seinem Bau geschwommen und erklärt uns das genauer
</edit>
@cyberdevil0815
Eigentlich sollte
genügen - Du suchst ja nicht nach Ordnern, in deren Namen "OldVersions" nur enthalten ist...
Übrigens: Wenn schon "
@Skyemugen
Wenn Du schon am Testen bist: Wie wäre es mit
BTW: Ich war etwas überrascht, dass
genügt - ich hätte sicherheitshalber
verwendet (Stichwort "escapen") ...
Grüße
bastla
Eigentlich sollte
FOR /F "tokens=*" %%G IN ('DIR /B /AD /S G:\OldVersions') DO del /S /Q "%%G"
Übrigens: Wenn schon "
cd
", dann aber gleich "cd /d G:\
" ...@Skyemugen
Wenn Du schon am Testen bist: Wie wäre es mit
@for /f "delims=" %s in ('dir /ad /b /s "E:\Skripte\Backup') do del /q "%~s\*.bak" 2>nul
findstr /i /e "\Backup"
findstr /i /e "\\Backup"
Grüße
bastla
moin Mädelz,
das hat mir keine Ruhe gelassen...
btw: der da
(anderer Rechner, als heute Mittag, mit einer 1 TB Platte E, auf der ziemlich "böse" Dateien bzw. wilde Ordnernamen liegen - mein WAIK Builder)
Gruß
das hat mir keine Ruhe gelassen...
C:\>dir e:\test
Datenträger in Laufwerk E: ist Volume
Volumeseriennummer: xyz
Verzeichnis von e:\test
02.08.2011 19:57 <DIR> .
02.08.2011 19:57 <DIR> ..
02.08.2011 19:53 <DIR> 1Backup
02.08.2011 19:53 <DIR> Kopie (2) von 1Backup
02.08.2011 19:56 <DIR> Kopie (2) von Neuer Ordner
02.08.2011 19:53 <DIR> Kopie (3) von 1Backup
02.08.2011 19:56 <DIR> Kopie (3) von Neuer Ordner
02.08.2011 19:53 <DIR> Kopie (4) von 1Backup
02.08.2011 19:56 <DIR> Kopie (4) von Neuer Ordner
02.08.2011 19:53 <DIR> Kopie (5) von 1Backup
02.08.2011 19:56 <DIR> Kopie (5) von Neuer Ordner
02.08.2011 19:53 <DIR> Kopie (6) von 1Backup
02.08.2011 19:56 <DIR> Kopie (6) von Neuer Ordner
02.08.2011 19:53 <DIR> Kopie (7) von 1Backup
02.08.2011 19:56 <DIR> Kopie (7) von Neuer Ordner
02.08.2011 19:53 <DIR> Kopie von 1Backup
02.08.2011 19:56 <DIR> Kopie von Neuer Ordner
02.08.2011 19:56 <DIR> Neuer Ordner
0 Datei(en) 0 Bytes
18 Verzeichnis(se), 13.971.251.200 Bytes frei
C:\>
C:\>for /d %a in (e:\test\*Backup) do echo %a
C:\>echo e:\test\1Backup
e:\test\1Backup
C:\>echo e:\test\Kopie (2) von 1Backup
e:\test\Kopie (2) von 1Backup
C:\>echo e:\test\Kopie (3) von 1Backup
e:\test\Kopie (3) von 1Backup
C:\>echo e:\test\Kopie (4) von 1Backup
e:\test\Kopie (4) von 1Backup
C:\>echo e:\test\Kopie (5) von 1Backup
e:\test\Kopie (5) von 1Backup
C:\>echo e:\test\Kopie (6) von 1Backup
e:\test\Kopie (6) von 1Backup
C:\>echo e:\test\Kopie (7) von 1Backup
e:\test\Kopie (7) von 1Backup
C:\>echo e:\test\Kopie von 1Backup
e:\test\Kopie von 1Backup
C:\>
btw: der da
FOR /F "tokens=*" %G IN ('DIR /B /AD /S *Backup*') DO echo "%G"
läuft geschätzt noch länger, als mein erster Schnellschuss, baut aber massenweise Fehler ...(anderer Rechner, als heute Mittag, mit einer 1 TB Platte E, auf der ziemlich "böse" Dateien bzw. wilde Ordnernamen liegen - mein WAIK Builder)
Gruß
aloha Bastla
das Unterschieben eines Platzhalters irgendwo im Satz suggeriert hat (funktioniert offensichtlich aber auch ohne)
Grüße
bastla
retour
Auch an Dich die Frage: Wozu "*Backup*", wenn die fraglchen Ordner doch nur "Backup" heißen sollen?
Weil ich ausnahmsweise eine Winblows Kiste @home hab und mir der for /?FOR /D %Variable IN (Satz) DO Befehl [Parameter]
Wenn der Satz Platzhalter enthält, dann bezieht sich der FOR-Befehl
auf Verzeichnisse und nicht auf Dateien.
Wenn der Satz Platzhalter enthält, dann bezieht sich der FOR-Befehl
auf Verzeichnisse und nicht auf Dateien.
Hast Du übrigens schon mal "
Jetzt nicht aktuell für den Fred ;-( ist ja eh schon gelöstfor /d /r
" in Kombination versucht (es ging ja schließlich um Unter-Unterordner)?Grüße
bastla
retour
Zitat von @bastla:
BTW: Ich war etwas überrascht, dass
genügt - ich hätte sicherheitshalber
verwendet (Stichwort "escapen") ...
BTW: Ich war etwas überrascht, dass
findstr /i /e "\Backup"
findstr /i /e "\\Backup"
Aloha Bastla,
nun, stimmt - ist ja ähnlich dem Phänomen, was ich ja T-Mo auch schon anfangs sagte: XP kommt damit klar, Win 7 muckt rum (gut, Win 7 habe ich es gestern nicht mehr getestet zu Hause, auf Arbeit fahr ich mit XP)
greetz André
P.S.: Klar geht dein Code schneller voran (auch wenn ich aufgrund meiner Struktur dennoch das
findstr
einbauen muss, sonst erfasst er nämlich auch die Unterordner von Backup
, was nicht sein soll ^_^ wenn ich die fehlenden zweiten Zollzeichen hinzufüge
@Skyemugen
Weshalb sollten Unterordner erfasst werden, wenn per "
Grüße
bastla
Weshalb sollten Unterordner erfasst werden, wenn per "
dir
" konkret nach Ordnern namens "Backup" gesucht und dann nur im jeweiligen Ordner (auf Verdacht) "*.bak" gelöscht wird?Grüße
bastla
Aloha bastla,
ganz einfach: Weil dies mein Test mit meinen Bedingungen war und das Topic hier nur als „Mensch, mal gucken, wie schnell es abläuft, wenn ...” diente *fg*
Da ich selbst nämlich auch die Inventor Suite 2010 nutze und derartige bzw. ähnliche Backupanordnungen habe, jedoch mit weiteren Unterordnern, sprich: Backup\Inventor und auch Backup\AutoCAD - wobei eben auch aufgrund einer älteren nebenbeibenutzen ACAD-Version eben .bak-Dateien einfach nur im Backup-Verzeichnis liegen, die jedoch nur unwichtig sind und daher gelöscht werden können - darf in meinem Fall/Test eben kein Unterordner mit einbezogen werden, darum auch die Suche nach
Klingt umständlich aber jeder hat so seine Macken :P
greetz André
ganz einfach: Weil dies mein Test mit meinen Bedingungen war und das Topic hier nur als „Mensch, mal gucken, wie schnell es abläuft, wenn ...” diente *fg*
Da ich selbst nämlich auch die Inventor Suite 2010 nutze und derartige bzw. ähnliche Backupanordnungen habe, jedoch mit weiteren Unterordnern, sprich: Backup\Inventor und auch Backup\AutoCAD - wobei eben auch aufgrund einer älteren nebenbeibenutzen ACAD-Version eben .bak-Dateien einfach nur im Backup-Verzeichnis liegen, die jedoch nur unwichtig sind und daher gelöscht werden können - darf in meinem Fall/Test eben kein Unterordner mit einbezogen werden, darum auch die Suche nach
\Backup
mit /e
-Schalter Da ich immer zu faul bin, erst nach den richtigen Pfaden zu suchen, leg' ich mir irgendwelche Ordner als temporäre Ablage mit leeren .txt im Skriptverzeichnis an, wo ich dann die Ordner immer wieder umbenennen kann und die Endungen der Dateien ändern lasse, einfach, um nicht ständig beim c&p vergesse, es umzuändern haha.Klingt umständlich aber jeder hat so seine Macken :P
greetz André
Aloha bastla,
äh, ja, stimmt, du hast ja den Ordner direkt angegeben *pfeif* Meinereiner nicht, (also nur E:\Skripte) weil ich widerum den code nahe am EP halten wollte, wo der Endordner nicht angegeben werden kann/soll, sondern im
Desweiteren war meine Verzeichnisdarstellung nur als verkürztes Beispiel gedacht, der Ordnername der Programme selber beinhaltet ebenso das Wort Backup ^_^
Aber gut, genug vom herumtüftelndem Offtopic, man verwirrt ja am Ende doch nur alle Leser *gg*
greetz André
äh, ja, stimmt, du hast ja den Ordner direkt angegeben *pfeif* Meinereiner nicht, (also nur E:\Skripte) weil ich widerum den code nahe am EP halten wollte, wo der Endordner nicht angegeben werden kann/soll, sondern im
dir
aufgelistet ist/wird.Desweiteren war meine Verzeichnisdarstellung nur als verkürztes Beispiel gedacht, der Ordnername der Programme selber beinhaltet ebenso das Wort Backup ^_^
Backup\Backup AutoCAD
bei dem Vermischen, hätte ich Barkeeper/Cocktailmixer an der Bar werden sollen, höhöAber gut, genug vom herumtüftelndem Offtopic, man verwirrt ja am Ende doch nur alle Leser *gg*
greetz André
Hallo Skyemugen!
Grüße
bastla
wo der Endordner nicht angegeben werden kann/soll, sondern im dir aufgelistet ist/wird.
... hätte ich zumindest dem Eröffnungskommentar nicht entnommen, und auch bei einem "*Backup*" wäre ein Ergebnis "E:\Skripte\Test\Backup\AutoCAD" nicht möglich ("E:\Skripte\Test\Backup_old\AutoCAD" aber natürlich sehr wohl) ...Grüße
bastla
Aloha bastla,
du hast wohl schon geschrieben, als ich noch editiert habe (5 Minuten working on progress muss man bei mir immer addieren) [in Sachen Pfad mit Backup]
Nun, ich ging im EP von
aus, wo ich den Endordner ja nicht direkt angeben kann, da die Elternverzeichnisse sich ja unterscheiden
Glaube, nächstes Mal separiere ich besser Test und Topic, das verwirrt dann weniger ^_^
greetz André
du hast wohl schon geschrieben, als ich noch editiert habe (5 Minuten working on progress muss man bei mir immer addieren) [in Sachen Pfad mit Backup]
Nun, ich ging im EP von
\\Netzlaufwerk\Haputordner\Projekt\Auto\Karosserie\Backup
\\Netzlaufwerk\Haputordner\Projekt\Auto\Motor\Backup
\\Netzlaufwerk\Haputordner\Projekt\Auto\Auspuff\Backup
\\Netzlaufwerk\Haputordner\Projekt\Auto\Getriebe\Backup
\\Netzlaufwerk\Haputordner\Projekt\Auto\Motor\Backup
\\Netzlaufwerk\Haputordner\Projekt\Auto\Auspuff\Backup
\\Netzlaufwerk\Haputordner\Projekt\Auto\Getriebe\Backup
aus, wo ich den Endordner ja nicht direkt angeben kann, da die Elternverzeichnisse sich ja unterscheiden
Glaube, nächstes Mal separiere ich besser Test und Topic, das verwirrt dann weniger ^_^
greetz André
Hallo Skyemugen!
Für Deine genannten Beispiele würden
aber natürlich auch (mit entsprechend größerer Einschränkung)
funktionieren - es wird beim Suchen nämlich der Pfad bis auf den letzten Bestandteil als "Startordner" interpretiert und von dort beginnend werden alle dem letzten Teil (also "Backup") entsprechenden Dateien (bzw hier: Ordner) gesucht ...
Grüße
bastla
Für Deine genannten Beispiele würden
dir /s /b /ad \\Netzlaufwerk\Haputordner\Backup
dir /s /b /ad \\Netzlaufwerk\Haputordner\Projekt\Auto\Backup
Grüße
bastla
Aloha bastla,
ah ja, stimmt, du hattest schon einmal einen derartigen Code geschrieben, hatte mich damals gewundert und gedacht: Muss ich mir merken.
Nunja, da dieses Verarbeiten für mich bis heute nicht 100% logisch erscheint, habe ich es wohl wieder vergessen.
Für mich muss immer etwas platzhaltendes hin, wenn ich etwas unbekanntes habe, diese Logik à la:
zwischen
geht mir einfach nicht wirklich in den Schädel
Muss ich mir wirklich mal einprägen, vereinfacht ja u.U. doch einiges ... aber kann bestimmt auch mal für Probleme sorgen ^_^
greetz André
ah ja, stimmt, du hattest schon einmal einen derartigen Code geschrieben, hatte mich damals gewundert und gedacht: Muss ich mir merken.
Nunja, da dieses Verarbeiten für mich bis heute nicht 100% logisch erscheint, habe ich es wohl wieder vergessen.
Für mich muss immer etwas platzhaltendes hin, wenn ich etwas unbekanntes habe, diese Logik à la:
zwischen
\
und sichselbst könnte noch \
und \
seingeht mir einfach nicht wirklich in den Schädel
Muss ich mir wirklich mal einprägen, vereinfacht ja u.U. doch einiges ... aber kann bestimmt auch mal für Probleme sorgen ^_^
greetz André
Aloha,
noch nie aufgefallen, dass z.B. beim Offenhaben von Zeichnungsdateien, AutoCAD (zumindest, Inventor verkneift sich, glaube ich, derartige Sachen) temporäre Zugriffsdateien anlegt, die jedoch manchmal nicht ganz so temporär bleiben?
Achja, dafür würdest du auch den Schalter
greetz André
noch nie aufgefallen, dass z.B. beim Offenhaben von Zeichnungsdateien, AutoCAD (zumindest, Inventor verkneift sich, glaube ich, derartige Sachen) temporäre Zugriffsdateien anlegt, die jedoch manchmal nicht ganz so temporär bleiben?
Achja, dafür würdest du auch den Schalter
/ah
benötigen, da diese versteckt sind.greetz André
Zitat von @cyberdevil0815:
Bei Revisions/Versionsänderung wird, wieso auch immer, ich bin ja kein Konstrukteur, das gesamte Modell und/oder Bauteil unter einem neuen Namen gespeichert
Bei Revisions/Versionsänderung wird, wieso auch immer, ich bin ja kein Konstrukteur, das gesamte Modell und/oder Bauteil unter einem neuen Namen gespeichert
Ist auch das Sinnvollste, stell dir mal vor, man möchte wieder den Zustand 2 und ist jetzt bei 7 *pfeif* das habe ich hier am laufenden Band, Forschung & Entwicklung eben ;D
Da ist es nun einmal das Einfachste, das komplette Teil von vor X wieder griffbereit zu haben, statt einzelne (Rück-)Zustände wieder in das aktuelle Bauteil einzupflegen.