Windows batch - Pfad zuschneiden und ein Teil in eine Variable speichern
Hallo zusammen,
ich habe bisher recht einfache batch geschrieben und bin jetzt mit meinem neuen Projekt etwas überfordert. Ich hoffe ihr könnt mir weiterhelfen.
Für Dokumente baue ich gerade ein Archiv auf. Ich habe für die 16 Bundesländer einzelne Ordnerstrukturen erstellt. In allen Strukturen liegen oft die gleiche Inhalte. Nun möchte ich von einem Bundesland ein Dokument in die anderen 15 kopieren.
Beispiel1:
d:\bayern\ebene1\ebene2\ebene3
d:\nrw\ebene1\ebene2\ebene3
...
Beispiel2:
d:\bayern\ebene1\ebene2\ebene3\ebene4
d:\nrw\ebene1\ebene2\ebene3\ebene4
...
Ab dem Ordner ebene1 ist die Ordnerstruktur identisch. Der Inhalt von ebene3 soll nun aus bayern heraus in alle anderen 15 Bundesländer kopiert werden.
Nun meine Frage:
Wie kann ich den ausgelesenen Pfad so zuschneiden, dass ich diesen ab der ebene1 in eine Variable speichern kann? Dies sollte jedoch für beide Beispiele gelten. Der Name Ebene1 sollte auch variabel sein.
Viele Grüße
Nemesys
ich habe bisher recht einfache batch geschrieben und bin jetzt mit meinem neuen Projekt etwas überfordert. Ich hoffe ihr könnt mir weiterhelfen.
Für Dokumente baue ich gerade ein Archiv auf. Ich habe für die 16 Bundesländer einzelne Ordnerstrukturen erstellt. In allen Strukturen liegen oft die gleiche Inhalte. Nun möchte ich von einem Bundesland ein Dokument in die anderen 15 kopieren.
Beispiel1:
d:\bayern\ebene1\ebene2\ebene3
d:\nrw\ebene1\ebene2\ebene3
...
Beispiel2:
d:\bayern\ebene1\ebene2\ebene3\ebene4
d:\nrw\ebene1\ebene2\ebene3\ebene4
...
Ab dem Ordner ebene1 ist die Ordnerstruktur identisch. Der Inhalt von ebene3 soll nun aus bayern heraus in alle anderen 15 Bundesländer kopiert werden.
Nun meine Frage:
Wie kann ich den ausgelesenen Pfad so zuschneiden, dass ich diesen ab der ebene1 in eine Variable speichern kann? Dies sollte jedoch für beide Beispiele gelten. Der Name Ebene1 sollte auch variabel sein.
Viele Grüße
Nemesys
Please also mark the comments that contributed to the solution of the article
Content-Key: 221689
Url: https://administrator.de/contentid/221689
Printed on: April 19, 2024 at 04:04 o'clock
9 Comments
Latest comment
Hallo Nemesys,
das Zerlegen der Pfade kannst du z.B. so machen:
Grüße Uwe
das Zerlegen der Pfade kannst du z.B. so machen:
@echo off & setlocal
set "ordner1=d:\bayern\ebene1\ebene2\ebene3"
for /f "tokens=1,2,3,4,5 delims=\" %%a in ("%ordner1%") DO @(
set "ebene1=%%a\%%b\%%c"
set "ebene2=%%a\%%b\%%c\%%d"
set "ebene3=%%a\%%b\%%c\%%d\%%e"
)
echo "%ebene1%"
echo "%ebene2%"
echo "%ebene3%"
Zitat von @Nemesys82:
Wie kann ich in folgendem Code die for-Schleife abbrechen, wenn das Ende des Pfades erreicht ist?
Brauchst du doch nicht, Wie kann ich in folgendem Code die for-Schleife abbrechen, wenn das Ende des Pfades erreicht ist?
%cd%
ist doch eh nur eine Zeile.Wenn du es trotzdem mal brauchst setze ein
goto :ende
in die Schleife und ein :ende
außerhalb der Schleife.Alternativ kannst du auch mit
find
Leerzeilen aus dem String für die FOR-Schleife entfernen.for /f "tokens=1,2,3,4,5,6,7,8,9,10,11,12,13 delims=\" %%a in ('echo "%cd%" ^| find -v ""') DO @(
set "basiswissen=\%%h\%%i\%%j\%%k\%%l\%%m\%%n"
)
Zitat von @Nemesys82:
Dein Vorschlag hat bei mir leider nicht funktioniert. Der Stern liefert leider nicht das gewünschte Ergebnis.
sorry da hatte ich ein Komma vergessen:Dein Vorschlag hat bei mir leider nicht funktioniert. Der Stern liefert leider nicht das gewünschte Ergebnis.
"tokens=1,2,3,4,5,*"
"tokens=1-5*"
Ich habe delims=basiswissen definiert, das hat leider auch nicht funktioniert. Geht das nicht oder habe ich was falsch gemacht?
geht nicht hinter delims=
werden immer nur einzelne Zeichen als Trennzeichen definiert