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

Pfad-String Zerlegen

Frage Entwicklung Batch & Shell

Mitglied: bithunter

bithunter (Level 1) - Jetzt verbinden

08.04.2011, aktualisiert 10:39 Uhr, 4845 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 ..
Ähnliche Inhalte
PHP
String zerlegen an verschieden Stellen
Frage von ppmk22PHP3 Kommentare

ich noch mal Ich habe verschieden Strings die immer 200 Zeichen lang sind. Diesen möchte ich an bestimmten stellen ...

Batch & Shell
String zerlegen an letzem Backslash
gelöst Frage von fuguBatch & Shell4 Kommentare

Heyho ihr Supercoder ;-) Ich möchte für ein Backup-Skript eine Textdatei mit den Backup-Quellen. Die Daten einzulesen ist leicht. ...

Batch & Shell
PowerShell String zerlegen in Array, DataTable, Hashtable speichern
gelöst Frage von derhoeppiBatch & Shell7 Kommentare

Guten Morgen, leider habe wieder ein Thema beim zerlegen eines Strings. Folgendes Problem: Die Rückgabe eines Admintools liefert mir ...

Batch & Shell
String mit dynamischer Länge und enthaltenen Leerzeichen zerlegen und Variablen zuweisen
gelöst Frage von robxBatch & Shell2 Kommentare

Hallo, ich habe einen String mit dynamischer Länge und enthaltenen Leerzeichen in z.B. folgender Form: Fall 1) oder Fall ...

Neue Wissensbeiträge
Datenschutz

Weitere Inforamtionen zum Sicherheitsproblem BeA

Information von Penny.Cilin vor 2 StundenDatenschutz

Im folgenden ein weiterer Bericht über die Sicherheitsprobleme von Bea. Fataler Konstruktionsfehler im besonderen elektronischen Anwaltspostfach Gruss Penny

Windows 10

Systemdienste behalten nach Win10 inplace-Upgrade nicht die ggf. modifizierte Startart bei

Tipp von DerWoWusste vor 4 StundenWindows 103 Kommentare

Stellt Euch vor, Ihr habt ein Win10 System und modifiziert dort die Startart von Systemdiensten. Zum Beispiel wollt Ihr ...

Microsoft Office

Deaktivieren von Startbildschirm und Backstage-Ansicht in Office 2016 per Batch-Datei

Anleitung von SarekHL vor 7 StundenMicrosoft Office17 Kommentare

Guten Morgen zusammen! Ich habe mir gestern (auch mit Hilfe dieses Boards) ein Script gebastelt, um in Office 2016 ...

Erkennung und -Abwehr

Sicherheitslücke Spectre und Meltdown: Status prüfen

Anleitung von Frank vor 13 StundenErkennung und -Abwehr2 Kommentare

Nach all den Updates der letzten Woche sollte man unbedingt auch den Status prüfen, ob die Sicherheitslücken Spectre, Meltdown ...

Heiß diskutierte Inhalte
Netzwerke
NTFS-Berechtigung
Frage von Daoudi1973Netzwerke23 Kommentare

Hallo zusammen und frohes neues Jahr (Sorry, ich bin spät dran) Meine Frage: 1- Ich habe einen Ordner im ...

Microsoft Office
Deaktivieren von Startbildschirm und Backstage-Ansicht in Office 2016 per Batch-Datei
Anleitung von SarekHLMicrosoft Office17 Kommentare

Guten Morgen zusammen! Ich habe mir gestern (auch mit Hilfe dieses Boards) ein Script gebastelt, um in Office 2016 ...

Drucker und Scanner
Gesucht DIN A3 Drucker
Frage von NebellichtDrucker und Scanner15 Kommentare

Hallo, ich möchte einen neuen DIN A3 Drucker kaufen. Um ab und zu, ca. 1 mal die Woche Farbausdrucke ...

Batch & Shell
AD-Abfrage in Batchdatei und Ergebnis als Variable verarbeiten
Frage von Winfried-HHBatch & Shell15 Kommentare

Hallo in die Runde! Ich habe eine Ergänzungsfrage zu einem alten Thread von mir. Ausgangslage ist die Batchdatei, die ...