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

Per Batch übergeordnetes Verzeichnis finden

Frage Entwicklung Batch & Shell

Mitglied: Wenzel

Wenzel (Level 1) - Jetzt verbinden

03.03.2009, aktualisiert 18.10.2012, 8326 Aufrufe, 6 Kommentare

Sodann will ich mal meine erste Frage hier loswerden

Hallo Allerseits,
ich möchte eine Pfadangabe einer Datei nach dem übergeordnetem Ordnernamen auswerten.

Warum ich das brauche:
Ich habe eine Ordnerstruktur:
C:\IrgendeinPfad\Hauptordner
C:\IrgendeinPfad\Hauptordner\Ordner1
C:\IrgendeinPfad\Hauptordner\Ordner2
C:\IrgendeinPfad\Hauptordner\Ordner3

In diesen Ordnern liegen Dateien, die immer Datei.xml heissen.
Wenn ich den Hauptordner inkl. Unterordner nach *.xml Dateien durchsuche, bekomme ich eine Dateiliste wie folgt:
C:\IrgendeinPfad\Hauptordner\Datei.xml
C:\IrgendeinPfad\Hauptordner\Ordner1\Datei.xml
C:\IrgendeinPfad\Hauptordner\Ordner2\Datei.xml
C:\IrgendeinPfad\Hauptordner\Ordner3\Datei.xml

Diese sollen in ein neues Zielverzeichnis kopiert werden, daher möchte/muss ich die Dateien umbenennen:
Pfad\Zielordner\Hauptordner.xml
Pfad\Zielordner\Ordner1.xml
Pfad\Zielordner\Ordner2.xml
Pfad\Zielordner\Ordner3.xml

Den Hauptordner übergebe ich an das Batch-Skript
Ich habe hier schon einiges "geschau_klaut"
Nur reicht mir meine bisherige Lösung nicht, da ich die xml-Datei des Hauptordners nicht erwische...

Hier mal mein Code
01.
  
02.
set tempDir=C:\temp\GesammelteXMLDateien 
03.
if "%~1"=="" ( goto NODIR ) 
04.
for /d %%v in ("%~1\*.*") do (  
05.
    for /f "delims=" %%d in ('dir /b /od "%%v\*.plmxml" 2^>nul^') do ( 
06.
		copy "%%v\%%d" "%tempDir%\%%~nxv%%~xd" 
07.
	)  
08.
)


Schön wäre, wenn ich nicht so umständlich die Ordnernamen suchen muss, sondern einfach den String (Bsp: C:\IrgendeinPfad\Hauptordner\Ordner1\Datei.xml) auswerte und alles zwischen letztem und vorletztem Backslash bekommen (in diesem Fall den String "Ordner1").

Vielen Dank schon mal an die Cracks hier...
Mitglied: bastla
03.03.2009, aktualisiert 18.10.2012
Hallo Wenzel und willkommen im Forum!

Eigentlich ging es neulich in diesem Thread um die gleiche Problemstellung ...

Grüße
bastla
Bitte warten ..
Mitglied: Biber
03.03.2009 um 21:33 Uhr
Moin Wenzel,

willkommen im Forum.
Schön wäre, wenn ich nicht so umständlich die Ordnernamen suchen muss, sondern einfach den String (Bsp: C:\IrgendeinPfad\Hauptordner\Ordner1\Datei.xml) auswerte und alles zwischen letztem und vorletztem Backslash bekommen (in diesem Fall den String "Ordner1").

Klare Anforderungen sind mir die Liebsten...
Demo zum Nachkaspern am CMD-Prompt (erste Zeile ist Eingabe, zweite Zeile Ausgabe]:
01.
for %i in ("C:\IrgendeinPfad\Hauptordner\Ordner1\Datei.xml\..") do @for %i in ("%~i") do @echo Set "ParentDir=%~ni" 
02.
Set "ParentDir=Ordner1"
[Geht unabhängig davon, ob C:\....Datei.xml existiert oder nicht]

Abgewandelt auf einen Batch, der mit dem Parameter "C:\IrgendeinPfad\Hauptordner\Ordner1\Datei.xml" [in Anführungszeichen] gerufen wird:
01.
 @echo off & setlocal 
02.
set tempDir=C:\temp\GesammelteXMLDateien 
03.
if "%~1"=="" ( goto NODIR ) 
04.
REM unoptimiert FOR %%i in ("%~1\..") do @for %%i in ("%%~i") do copy "%~1" "%tempdir%\%%~ni.XML" 
05.
FOR %%i in ("%~1\..") do @copy "%~1" "%tempdir%\%%~ni.XML"
[ungetestet]
[Edit] Optimierung durch bastla nachgezogen[/Edit]

Grüße
Biber
Bitte warten ..
Mitglied: bastla
03.03.2009 um 21:48 Uhr
@Biber
Sehr elegant - aber wozu das zweite "for"?

Grüße
bastla
Bitte warten ..
Mitglied: Biber
03.03.2009 um 21:58 Uhr
Moin bastla,

...aber wozu das zweite "for"?
Ich dachte, wenn ich es nicht ein bisschen aufbausche, dann merkt jede/r wie einfach das Bätschen ist...

Okay, ich gebs zu:
01.
for %i in ("C:\IrgendeinPfad\Hauptordner\Ordner1\Datei.xml\..") do @echo Set "ParentDir=%~ni" 
02.
Set "ParentDir=Ordner1"
.... reicht völlig aus...

Grüße
Biber
Bitte warten ..
Mitglied: Wenzel
03.03.2009 um 23:58 Uhr
Hallo bastla, hallo Biber,
vielen Dank für die schnellen Antworten.
Ich habe Bibers Lösung bei mir reingebastelt, bei mir wird ja nicht ein Dateinamen, sondern der hauptordner übergeben, dann sieht das so aus:

01.
set tempDir=C:\temp\GesammelteXMLDateien  
02.
rem Abfrage, ob Parameter übergeben wurde... 
03.
FOR /F "delims=" %%i in ('dir /b /s /a-d "%~1\*.xml"') do (  
04.
	for %%v in ("%%i\..") do (  
05.
		Echo copy "%%i" "%tempDir%\%%~nv.xml" 
06.
07.
08.
pause
Natürlich muss das Echo in der "scharfen" Version noch raus, aber da geht es um mehrere Dateien mit jeweils bis zu 70 MB, und die remote rumzuschaufeln macht keinen Spass...

Gibt es da irgendwelche Einwände von Euch beiden Profis, wenn nein, dann setze ich mal den Haken bei gelöst...

Cool, wie einfach die Lösung ist.
Bitte warten ..
Mitglied: Wenzel
04.03.2009 um 00:00 Uhr
Zitat von Biber:
Moin Wenzel,
Klare Anforderungen sind mir die Liebsten...
Grüße
Biber

Klare Antworten sind mir die Liebsten

Vielen Dank, genau danach habe ich gesucht!!!

Gruß vom Wenzel
Bitte warten ..
Ähnliche Inhalte
Batch & Shell
Batch Syntaxfehler, aber finde ihn nicht :(
Beitrag von 5 Kommentare

Frage von PinkFLuffyUnicorn zum Thema Batch & Shell

Entwicklung
Verzeichnise sichern mit batch datei (Win10)
Beitrag von 13 Kommentare

Frage von Limbach zum Thema Entwicklung

Batch & Shell
Batch zum Prüfen ob ein bestimmter Benutzer in einem bestimmten Verzeichnis ist
Beitrag von 7 Kommentare

Frage von TechnikTV zum Thema Batch & Shell

Batch & Shell
Nummerierte dateien lücke finden .batch
Beitrag von 2 Kommentare

Frage von franky89 zum Thema Batch & Shell

Neue Wissensbeiträge
MikroTik RouterOS

Mikrotik - Lets Encrypt Zertifikate mit MetaROUTER Instanz auf dem Router erzeugen

Beitrag von 4 Kommentare

Anleitung von colinardo zum Thema MikroTik RouterOS

Sicherheit

Sicherheitslücke in HP-Druckern - Firmware-Updates stehen bereit

Beitrag von

Information von BassFishFox zum Thema Sicherheit

Administrator.de Feedback

Entwicklertagebuch: Die Startseite wurde überarbeitet

Beitrag von 5 Kommentare

Information von admtech zum Thema Administrator.de Feedback

Vmware

VMware Desktopprodukte sind verwundbar

Beitrag von

Information von Penny.Cilin zum Thema Vmware

Heiß diskutierte Inhalte
Visual Studio
Vb.net-Tool zum Erzeugen einer Outlook-E-Mail
Beitrag von 24 Kommentare

Frage von ahstax zum Thema Visual Studio

Windows Server
RDP macht Server schneller???
Beitrag von 16 Kommentare

Frage von JaniDJ zum Thema Windows Server

Windows Netzwerk
Netzwerk Neustrukturierung
Beitrag von 16 Kommentare

Frage von IT-Dreamer zum Thema Windows Netzwerk

Windows 10
Windows 10 dunkler Bildschirm nach Umfallen
Beitrag von 15 Kommentare

Frage von Akcent zum Thema Windows 10