campari-o
Goto Top

Mit Batch den letzten Ordner eines Pfades aus einer Listendatei ermitteln

ermitteln des Zielordners für -copy-Befehle aus einer Ordnerliste mit unterschiedlichen Verzeichnistiefen

Hallo Forengemeinde!
Nun komme ich also doch noch in die Verlegenheit eine wahrscheinlich einfache Frage hier zu stellen.
Dieses Forum hat mir schon bei seeehr vielen Problemlösungen geholfen, aber an diesem sitz ich nun seit zwei Tagen und weder hier,
noch im sonstigen Googleversum habe ich einen für mich verwertbaren Lösungsansatz gefunden.

Vorweg, ich bin auf eine Batchdatei festgelegt.

Zu meinem Problem:

Ich schreibe hier wie wild an einer Batch, die nichts anderes macht, als sowohl bestimmte Dateien, als auch in einer Listendatei angebbare Ordner in einen (immer dem Datum nach benannten) Backupordner zu sichern und diese auch, bis auf eine angegebene Zahl, wieder zu löschen um nur die aktuellsten X zu behalten.
Soweit so gut, es klappt auch alles wunderbar bis auf die Ordnerliste.

Mein Problem daran ist die Funktionsweise der -copy-Befehle, da diese immer den INHALT des Quellordners ind den Zielordner kopieren und nicht einfach den Quellordner selbst.

bsp:
xcopy "LFW:\xxxxx\yyyyy\zzzz" "LFW:\Backup\zzzz"

Da man aber in der Liste irgendwelche und beliebig viele Ordner angeben können soll, die dann aber trotzdem im Zielverzeichnis\Originalname landen sollen wird das etwas schwierig.
Ich muss also irgendwie den Quellordner aus dem Pfad-String auslesen und ihn als Zielordner in meine FOR-xcopy-Schleife angeben.

LFW:\xxxxx\yyyyy\ZZZZ --> LFW:\Backup\ZZZZ
LFW:\aaa\BBBB --> LFW:\Backup\BBBB
LFW:\hhhh\iiiii\jjjj\kkkk\llll\MMM ---> LFW:\Backup\MMMM

Mein bisheriger Ansatz dreht sich drum irgendwie die "\" im Pfad zu zählen (mit FINDSTR ?) und dann in der FOR-Schleife das Xte (letzte) Token anzugeben.
Und genau in diesem Zählen liegt mein Problem, ich bekomms einfach nicht hin.

Andere Lösungswege sind natürlich auch gern gesehen.

Vielen Dank schonmal

Content-Key: 110591

Url: https://administrator.de/contentid/110591

Printed on: April 24, 2024 at 05:04 o'clock

Member: bastla
bastla Mar 05, 2009, updated at Oct 18, 2012 at 16:37:49 (UTC)
Goto Top
Hallo Campari-O und willkommen im Forum!

Schau Dir mal diesen Beitrag an ...

Grüße
bastla
Member: Campari-O
Campari-O Mar 05, 2009 at 11:34:27 (UTC)
Goto Top
Hallo bastla!

Danke für die schnelle Reaktion, aber
den kenn ich, wollte ich oben eigentlich auch rein schreiben. Hab ich wohl leider vergessen.
Der Unterschied ist, dass dort zumindest sicher ist, dass .xml-Dateien im Verzeichnis liegen, was dann als Anhaltspunkt verwendet werden kann.
Diesen Vorteil habe ich leider nicht. Ich habe völlig willkürliche Ordner.

Oder aber ich habe den Beitrag nicht verstanden, was ich nie ausschließe.

Habe auch schon einiges mit %~nxi versucht, ws aber leider immer zu der Meldung führte, dass ich Pfadoperatoren an dieser Stelle nicht verwenden könne.
Member: Biber
Biber Mar 05, 2009 at 12:05:45 (UTC)
Goto Top
Moin Campari-O,

an dieser Stelle ist nichts Kompliziertes.... mach Dir da nicht so viele Gedanken:
>for /f %i in ("LFW:\hhhh\iiiii\jjjj\kkkk\llll\MMM") do @echo LetzterPfadteil: [%~ni]  
LetzterPfadteil: [MMM]

Vollkommen egal, ob es diesen "Pfadstring" gibt oder ob es überhaupt eine Windows-konforme Pfadangabe wäre.

Grüße
Biber
Member: Campari-O
Campari-O Mar 05, 2009 at 12:18:36 (UTC)
Goto Top
Hi Biber

Hab das eben nochmal versucht.
Es kommt wie oben schon erwähnt die Meldung:

Die folgende Verwendung des Pfadoperators zur Ersetzung eines Batchparameters ist ungültig: %~ni]
Geben sie CALL /? oder FOR /? ein, um herauszufinden, welche Formate gültig sind.

14:26 Mist muss weg. Werd wohl erst morgen Früh weiterversuchen können. Bin mal gespannt wo mein Fehler liegt.
Im Prompt funktioniert die Zeile ja, nur eben nicht im Batch
Member: bastla
bastla Mar 05, 2009 at 13:44:21 (UTC)
Goto Top
Hallo Campari-O!

Wenn's ein Batch sein soll, natürlich die "%"-Zeichen verdoppeln, daher also:
for /f %%i in ("LFW:\hhhh\iiiii\jjjj\kkkk\llll\MMM") do @echo LetzterPfadteil: [%%~ni] 
Grüße
bastla
Member: Campari-O
Campari-O Mar 05, 2009 at 22:33:00 (UTC)
Goto Top
Das hab ich natürlich brav gemacht. Läge es daran, würd ich in die Tastatur beißen.
Aber ich bin fast sicher, dass es nur son Miniding ist, was ich überseh.
Member: Campari-O
Campari-O Mar 06, 2009 at 06:50:56 (UTC)
Goto Top
Fragt mich nicht warum, aber heute gehts.
Kiste engeschaltet, Batch gestartet --> geht??? Naja, ich hasse diese Wunderheilungen, da man nie weiß worans nun lag.
Jetzt noch "demlims=" eingefügt und schon sind die Leerzeichen in den Pfaden auch dabei.

DANKE Leute!!!!
Member: Biber
Biber Mar 06, 2009 at 07:05:38 (UTC)
Goto Top
Moin Campari-O,

Jetzt noch "demlims=" eingefügt und schon sind die Leerzeichen in den Pfaden auch dabei.
Also, an irgendwelchen "demlims" oder "gremlins" kann es eigentlich nicht liegen, dass es heute läuft...

Aber ich denke, ein "Erledigt"-Haken ist zwar noch nicht, aber wäre angebracht.

Schönes Wochenende
Biber
Member: Campari-O
Campari-O Mar 06, 2009 at 07:38:30 (UTC)
Goto Top
Der kommt sofort, war nur nicht sicher, ob dann noch ne Antwort kommt :D
Wollt ja schließlich nochmal Danke sagen face-smile
Und da kommt er schon.
Das jetzt auftretende Problem, dass mir xcopy nur den letzten Ordner der liste kopiert und bei den anderen "unzulässige Parameterzahl" behauptet werd ich schon finden.
Sein kanns ja eigentlich nicht, da die copy Anweisung in einer Schleife steckt --> alle Anweisungen haben die selben Parameter.