Top-Themen

Aktuelle Themen (A bis Z)

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit
GELÖST

Windows batch - Pfad zuschneiden und ein Teil in eine Variable speichern

Frage Entwicklung Batch & Shell

Mitglied: Nemesys82

Nemesys82 (Level 1) - Jetzt verbinden

11.11.2013, aktualisiert 19:40 Uhr, 1788 Aufrufe, 9 Kommentare, 4 Danke

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

Mitglied: colinardo
11.11.2013 um 20:59 Uhr
Hallo Nemesys,
das Zerlegen der Pfade kannst du z.B. so machen:
01.
@echo off & setlocal 
02.
set "ordner1=d:\bayern\ebene1\ebene2\ebene3" 
03.
for /f "tokens=1,2,3,4,5 delims=\" %%a in ("%ordner1%") DO @( 
04.
	set "ebene1=%%a\%%b\%%c" 
05.
	set "ebene2=%%a\%%b\%%c\%%d" 
06.
	set "ebene3=%%a\%%b\%%c\%%d\%%e" 
07.
08.
echo "%ebene1%" 
09.
echo "%ebene2%" 
10.
echo "%ebene3%"
Grüße Uwe
Bitte warten ..
Mitglied: Nemesys82
12.11.2013 um 09:11 Uhr
Hallo Colinardo,

vielen Dank für deine Antwort. Diese ist sehr hilfreich.
Wie kann ich in folgendem Code die for-Schleife abbrechen, wenn das Ende des Pfades erreicht ist?

@echo off & setlocal

set dir=%cd%
for /f "tokens=1,2,3,4,5,6,7,8,9,10,11,12,13 delims=\" %%a in ("%cd%") DO @(
set "basiswissen=\%%h\%%i\%%j\%%k\%%l\%%m\%%n"
)

echo %basiswissen%
pause

VG Nemesys
Bitte warten ..
Mitglied: colinardo
12.11.2013 um 09:29 Uhr
Zitat von Nemesys82:
Wie kann ich in folgendem Code die for-Schleife abbrechen, wenn das Ende des Pfades erreicht ist?
Brauchst du doch nicht, %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.
01.
for /f "tokens=1,2,3,4,5,6,7,8,9,10,11,12,13 delims=\" %%a in ('echo "%cd%" ^| find -v ""') DO @(  
02.
  set "basiswissen=\%%h\%%i\%%j\%%k\%%l\%%m\%%n" 
03.
)
Grüße Uwe
Bitte warten ..
Mitglied: Nemesys82
12.11.2013 um 10:47 Uhr
Das Problem sind die letzten Variablen, wenn diese nicht belegt sind. Wenn ich einen xcopy-Befehl damit definiere werden zusätzliche Unterordner angelegt. z.B. %n. Außerdem werden die zusätzlichen \ drangehängt. Wie kann ich das verhindern?

Gibt es einen Befehl, mit dem man sagen kann, dass der String einer Variable an einer definierten Stelle getrennt wird und die beiden Teile in zwei verschiedene Variablen gespeichert werden?
Bitte warten ..
Mitglied: colinardo
12.11.2013, aktualisiert um 11:43 Uhr
du kannst die Definition der Token in der For-Schleife auch so machen:
"tokens=1,2,3,4,5,*"
so wird z.B. der 5ten Variablen der ganze Rest des Pfades zugewiesen.
Wieso der ganze Aufwand ? xcopy kann doch ganze Unterordner rekursiv kopieren

Grüße Uwe
Bitte warten ..
Mitglied: Nemesys82
12.11.2013 um 11:37 Uhr
Dein Vorschlag hat bei mir leider nicht funktioniert. Der Stern liefert leider nicht das gewünschte Ergebnis.
Ich habe delims=basiswissen definiert, das hat leider auch nicht funktioniert. Geht das nicht oder habe ich was falsch gemacht?

Der Aufwand muss leider sein. Ich möchte gezielt Ordner mit dem Inhalt kopieren.
Bitte warten ..
Mitglied: colinardo
12.11.2013, aktualisiert um 13:27 Uhr
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:
"tokens=1,2,3,4,5,*"
geht aber auch so:
"tokens=1-5*"
hier wäre also dann in %%f der ganze Rest der Zeile
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
Bitte warten ..
Mitglied: Nemesys82
13.11.2013 um 08:15 Uhr
Vielen Dank. Die Batch läuft jetzt wie gewünscht.
Bitte warten ..
Mitglied: colinardo
13.11.2013 um 09:11 Uhr
Alles klar, dann bitte den Beitrag noch als gelöst markieren. Merci.

Grüße Uwe
Bitte warten ..
Ähnliche Inhalte
Batch & Shell
Pfad in Variabel speichern und ausgeben Batch
Frage von miichiii9Batch & Shell7 Kommentare

Hallo miteinander Ich wollte ein Befehl in deiner Variabel speichern und dann in einer if schleife (Wenn Bedingung erfüllt) ...

Batch & Shell
Wert aus Batch Schleife in Variable speichern
gelöst Frage von anmelderBatch & Shell5 Kommentare

Ich möchte aus einem Verzeichnis alle Dateien mit einer bestimmten Endung anzeigen lassen. Die Dateien sind nummeriert. Der Nutzer ...

Batch & Shell
Batch: Aktuelle Codepage in Variable speichern
gelöst Frage von tomaschkuBatch & Shell3 Kommentare

Hallo, Ich möchte gerne mit einem Batch Skript die aktuelle Codepage auslesen und in eine Variable speichern. Ich möchte ...

Batch & Shell
In einer Batch-Datei einen variablen Teil eines Dateinamens auslesen
gelöst Frage von dh0815Batch & Shell5 Kommentare

Hallo Leute, das ist mein erster Post hier und ich möchte mich vorab schon dafür entschuldigen, wenn ich etwas ...

Neue Wissensbeiträge
Windows 10

Autsch: Microsoft bündelt Windows 10 mit unsicherer Passwort-Manager-App

Tipp von kgborn vor 1 TagWindows 107 Kommentare

Unter Microsofts Windows 10 haben Endbenutzer keine Kontrolle mehr, was Microsoft an Apps auf dem Betriebssystem installiert (die Windows ...

Sicherheits-Tools

Achtung: Sicherheitslücke im FortiClient VPN-Client

Tipp von kgborn vor 1 TagSicherheits-Tools

Ich weiß nicht, wie häufig die NextGeneration Endpoint Protection-Lösung von Fortinet in deutschen Unternehmen eingesetzt wird. An dieser Stelle ...

Internet

USA: Die FCC schaff die Netzneutralität ab

Information von Frank vor 2 TagenInternet5 Kommentare

Jetzt beschädigt US-Präsident Donald Trump auch noch das Internet. Der neu eingesetzte FCC-Chef Ajit Pai ist bekannter Gegner einer ...

DSL, VDSL

ALL-BM200VDSL2V - Neues VDSL-Modem mit Vectoring von Allnet

Information von Lochkartenstanzer vor 2 TagenDSL, VDSL2 Kommentare

Moin, Falls jemand eine Alternative zu dem draytek sucht: Gruß lks

Heiß diskutierte Inhalte
Batch & Shell
Kann man mit einer .txt Datei eine .bat Datei öffnen?
gelöst Frage von HelloWorldBatch & Shell20 Kommentare

Wie schon im Titel beschrieben würde ich gerne durch einfaches klicken auf eine Text oder Word Datei eine Batch ...

Router & Routing
OpenWRT bzw. L.E.D.E auf Buffalo WZR-HP-AG300H - update
gelöst Frage von EpigeneseRouter & Routing11 Kommentare

Guten Tag, ich habe auf einem Buffalo WZR-HP-AG300H die alternative Firmware vom L.E.D.E Projekt geflasht. Ich bin es von ...

LAN, WAN, Wireless
WLAN Reichweite erhöhen mit neuer Antenne
gelöst Frage von gdconsultLAN, WAN, Wireless8 Kommentare

Hallo, ich besitze einen TL-WN722N USB-WLAN Dongle mit einer richtigen Antenne. Ich frage mich jetzt ob man die Reichweite ...

Windows Server
Ping auf einen bestimmten Server nicht möglich
gelöst Frage von a.thierWindows Server7 Kommentare

Hallo, ich habe folgendes Problem. srv-dc1: Ping srv-nav > geht Ping srv-exchange > geht nicht srv-exchange: Ping srv-dc1 > ...