Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

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

Pfad-String Zerlegen

Frage Entwicklung Batch & Shell

Mitglied: bithunter

bithunter (Level 1) - Jetzt verbinden

08.04.2011, aktualisiert 10:39 Uhr, 4790 Aufrufe, 11 Kommentare

Moin,



Mein Problem besteht darin, dass ich eine String-Eingabe, welche mit set /p in eine variable abgespeichert wird, zerlegen muss.
Das wäre kein Problem wenn die Eingabe immer die gleiche Struktur hätte, jedoch kann sie immer unterschiedlich sein





z.B.

Eingabe1:
"C:\Temp\Example 2\Setups\Test.exe"

Eingabe2:
"U:\Ordner1\Unterordner2\Unterordner 3\Version1.0\Setups\Test3.exe"

(Der Eingabe-String endet jedoch immer mit "....exe" und die Datei befindet sich immer im "Setups" Ordner)

Als Ergebnis bräuchte ich den Pfad des Ordners worin sich die exe befindet,den Pfad des Überordners worin sich der Ordner der exe befindet und der name der Datei mit Endung für ein weiteren Batch

z.B.
"C:\Temp\" "C:\Temp\Example 2\Setups\" "Test.exe"



MfG bithunter
Mitglied: bastla
08.04.2011 um 10:38 Uhr
Hallo bithunter und willkommen im Forum!

Unter "for /?" findest Du (ziemlich gegen Ende) die Möglichkeiten zur Zerlegung - für den "Überordner" könntest Du etwa so vorgehen:
01.
for %%i in ("%Pfad%\..") do echo %%~dpi
Annahme dabei: Die Eingabe enthält keine (umschließenden) Anführungszeichen ...

Grüße
bastla
Bitte warten ..
Mitglied: bithunter
08.04.2011 um 10:53 Uhr
Vielen Dank,


Mit :
for %%a in (%name%) do set pfad=%%~dpa
for %%i in (%name%) do set datei=%%~nxi

kann ich nun den Pfad des Ordners und der Name der Datei herausfinden jedoch nicht den "Überordner"

Die Test-batch:

@echo off
Title Test
echo Pfad eingeben
set /p name=
for %%a in (%name%) do set pfad="%%~dpa"
for %%i in (%name%) do set datei="%%~nxi"
echo %pfad%
echo %datei%
pause

Ausgabe:
C:\Temp\Example 2\Setups\
Test.exe


Edit:
Da der Überordner immer "setups" heißt, habe ich den Pfad-String um 7 Stellen verkürz und kriege somit den gewünschten Effekt

set pfad2="%pfad:~0,-7%"

Ich wäre jedoch dankbar wenn jemand einen Tip für eine flexiblere Lösung hätte.
Bitte warten ..
Mitglied: 60730
08.04.2011 um 11:08 Uhr
moin,

Die Test-batch:
@echo off

@Biber ich will einen eigenen Counter..... ja ich weiß - selber zählen...

for /f "tokens=1-3 delims=\" %a in ("%pfad%") do echo %a-%b-%c

btw: Bitte nutze doch die Code Blöcke.

Grüße
Bitte warten ..
Mitglied: bithunter
08.04.2011 um 11:15 Uhr
Zitat von 60730:
> for /f "tokens=1-3 delims=\" %a in ("%pfad%") do echo %a-%b-%c

Grüße


Wie gesagt, die Struktur ist sehr variabel(die Datei könnte in 10-15 Unterordner versteckt sein), d.h. die Anzahl der Tokens variirt mit der Anzahl der vorhanden Backslashes im String, die Backslashes müssten aber vorher im String gezählt werden
Bitte warten ..
Mitglied: Biber
08.04.2011 um 11:47 Uhr
Moin bithunter,

willkommen im Forum.

Mach da nicht so'n Heckmeck drum, sondern lieber ein paar Codetags.
Heut' ist Freitag und wir essen zeitig.

Beispiel am CMD-Prompt für Anzeige Überordner [führendes ">" gehört zu meinem Prompt; nicht mit eingeben]:
>set "fullfname=y:\Eigene Dateien\Altova Projects\Spelling\Lexicons\custom.tlx" 
 
>for %i in ("%fullfName%") do @for %j in ("%~dpi\..\.") do @echo ParentDir:[%~dpj] Dir:[%~dpi] File:[%~nxi] 
ParentDir:[y:\Eigene Dateien\Altova Projects\] Dir:[y:\Eigene Dateien\Altova Projects\Spelling\Lexicons\] File:[custom.tlx]
Grüße
Biber
Bitte warten ..
Mitglied: bithunter
08.04.2011 um 12:05 Uhr
Vielen Dank!

Damit funktioniert es einwandfrei und ist klomplett variabel.
Bitte warten ..
Mitglied: bastla
08.04.2011 um 12:12 Uhr
@Biber
... wobei der Schlenker mit "\." am Ende ja reine Verzierung (Nährwert nicht feststellbar) ist ...
den Pfad des Überordners worin sich der Ordner der exe befindet
hast wenigstens Du richtig interpretiert (also nicht wörtlich genommen) - für mich wäre das in Deinem Beispiel "y:\Eigene Dateien\Altova Projects\Spelling\" gewesen ...

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

stimmt, ich wollte (und bin) auf den Über-Überordner gesprungen.
Ein Ordner darunter (falls der gemeint gewesen sein sollte) wäre ja noch einfacher:
>for %i in ("%fullfName%") do @for %j in ("%~dpi\.") do @echo ParentDir:[%~dpj] Dir:[%~dpi] File:[%~nxi] 
ParentDir:[y:\Eigene Dateien\Altova Projects\Spelling\] Dir:[y:\Eigene Dateien\Altova Projects\Spelling\Lexicons\] File:[custom.tlx]
Zusammenfassend.
a) works as designed
b) mit dem zeitigen Essen könnte es noch klappen.

@bitchhunter
Haken dran und gut is'.

Grüße
Biber
Bitte warten ..
Mitglied: bithunter
08.04.2011 um 13:09 Uhr
Zitat von Biber:
@bitchhunter
na das ist mit Sicherheit nicht mein Nickname



Falls es noch jemand mal gebrauchen könnte, hier mein Endergebnis:

for %%l in (%archiv%) do @for %%m in ("%%~dpl\.") do set dirup2=%%~dpm & set dir2=%%~dpl & set name=%%~nxl
set dir=%dir2:~0,-1%
set dirup=%dirup2:~0,-1%
set name2=%name:~0,-4%

Das Kürzen der String's ist notwendig, um die Leerzeichen zu löschen, welche automatisch am Ende der Verzeichnissstring's erstellt werden.
Bitte warten ..
Mitglied: Skyemugen
08.04.2011 um 13:10 Uhr
Aloha Biber,
[OT]
also nein, nein, wie heißt denn bei dir der TE? Was du wohl da wieder im Sinn hattest. *fg*
[/OT]
greetz André
Bitte warten ..
Mitglied: Biber
08.04.2011 um 13:58 Uhr
[OT]
@Skyemugen
oh f*ck.... da war ich schon mit einem Bein im WE....
... und jetzt stattdessen mit einem Bein im Fegefeuer...

Das liegt bestimmt nur an diesem ver###ten Umgangston, den meine ver###ten ###-Arbeitskollegen immer pflegen.
Da, denen werd ich mal die ###te ### in den ###, aber so richtig.

@bithunter
Öhmm ...sorry....

Die Kürzerei der Variablen brauchst du nicht, wenn du die Variablen so setzt:
.... set "dirup2=%%~dpm" & set "dir2=%%~dpl" & set "name=%%~nxl"

Schönes Wochenende und viel Spass beim Was-auch-immer-jagen.
Biber
mir bitte kein Bit
[/OT]
Bitte warten ..
Neuester Wissensbeitrag
Windows 10

Powershell 5 BSOD

(8)

Tipp von agowa338 zum Thema Windows 10 ...

Ähnliche Inhalte
Batch & Shell
gelöst PowerShell String zerlegen in Array, DataTable, Hashtable speichern (7)

Frage von derhoeppi zum Thema Batch & Shell ...

C und C++
gelöst Anzahl der Buchstaben in einem String Element Array C++ (3)

Frage von Protected zum Thema C und C ...

Windows Userverwaltung
Servergespeichertes Profil - Pfad ausfindig machen (6)

Frage von staybb zum Thema Windows Userverwaltung ...

Heiß diskutierte Inhalte
Microsoft
Ordner mit LW-Buchstaben versehen und benennen (21)

Frage von Xaero1982 zum Thema Microsoft ...

Netzwerkmanagement
gelöst Anregungen, kleiner Betrieb, IT-Umgebung (18)

Frage von Unwichtig zum Thema Netzwerkmanagement ...

Windows Update
Treiberinstallation durch Windows Update läßt sich nicht verhindern (14)

Frage von liquidbase zum Thema Windows Update ...

DSL, VDSL
Problem mit variernder Internetgeschwindigkeit (12)

Frage von schaurian zum Thema DSL, VDSL ...