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
Kommentar vom Moderator Biber am 21.03.2011 um 18:17:39 Uhr
Beitrag verschoben von "Betriebssysteme" nach "Batch & Shell".

DOS BATCH Programmierung Position von Zeichen in Variable suchen und diese kürzen

Frage Entwicklung Batch & Shell

Mitglied: herbst27

herbst27 (Level 1) - Jetzt verbinden

21.03.2011, aktualisiert 18.10.2012, 6017 Aufrufe, 2 Kommentare

Hallo

Ich hoffe dass mir jemand das DOS-Batch-Problemchen lösen kann.
Das mit der FOR-Schleife klappt bei mir nicht so wie möchte

Das Kernproblem dabei ist, dass ich Dateien in verschiedene Verzeichnisse kopieren muss.
Ich habe Pfad-Variablen, welche der Benutzer eingeben kann.
Dabei können auch Unterverzeichnisse vorkommen und Platzhalter wie * oder ?.


Beispiel 1
\abc\de\f*.*

Beispiel 2
c:\Material\Schrauben\10mm\Messing_*.*

gewünschtes Resultat:
bei Beispiel 1
\abc\de\

bei Beispiel 2
c:\Material\Schrauben\10mm\

Wenn es hilft, kann ich auch immer den kompletten Pfad liefern wie in Beispiel 2

..demnach muss ich in den beiden Beispielen die letzte Position vom Backslash "\" ermitteln und anschliessend die rechte Seite der Variable löschen.
... was mir bis anhin leider nicht gelang

Ich danke für jeden Lösungsansatz

herbst27
Mitglied: bastla
21.03.2011 um 16:08 Uhr
Hallo herbst27 und willkommen im Forum!

Da Derartiges nicht ganz so selten benötigt wird, gibt es in CMD bereits eine passende Funktionalität:
for /f "delims=" %%i in ("%Eingabe%") do set "Pfad=%%~pi"
oder mit Laufwerk:
for /f "delims=" %%i in ("%Eingabe%") do set "Pfad=%%~dpi"
Mehr dazu ziemlich am Ende der Hilfe zu "for" ...

Grüße
bastla

P.S.: Per DOS wäre das nicht möglich gewesen - aber dazu gibt es ja die CMD-Shell ...
Bitte warten ..
Mitglied: herbst27
23.03.2011, aktualisiert 18.10.2012
Hallo bastla

Vielen Dank für deine schnelle und korrekte Lösung.
Ich war (leider nur) nahe dran.
Die Seite "Tutorial zur FOR-Schleife "
(http://www.administrator.de/wissen/tutorial-zur-for-schleife-155681.htm ...)
hatte ich komplett durchgearbeitet und dabei jeweils nicht kapiert, dass bei "Pfad=%%~pi" das i für die Variable %%i steht.

Dank deiner Lösung funktioniert mein Test-Batch:

01.
set test1="x:\qqwweerrret\abcdef\Abc*.*" 
02.
set test2="\qqwweerrret\abcdef\Abc*.*" 
03.
 
04.
for /f "delims=" %%A in ("%test1%") do set "Pfad1=%%~dpA" 
05.
echo PFAD mit Laufwerk ~dp: %Pfad1% 
06.
 
07.
for /f "delims=" %%A in ("%test2%") do set "Pfad2=%%~pA" 
08.
echo PFAD ohne Laufwerk ~p: %Pfad2%
Nochmals DANKE

Grüsse aus Luzern
herbst27

[Edit Biber] Codeformatierung. [/Edit]
Bitte warten ..
Ähnliche Inhalte
Batch & Shell
gelöst Mit Batch einen Dateityp auf Partition suchen (2)

Frage von M4tze521999 zum Thema Batch & Shell ...

Batch & Shell
gelöst Batch Abfrage Vergleiche mit Variable goto (4)

Frage von Zunaras zum Thema Batch & Shell ...

Batch & Shell
gelöst Laufwerksbezeichnung (label) in Batch als Variable nutzen (21)

Frage von tobias.mock zum Thema Batch & Shell ...

Batch & Shell
gelöst Variable per Batch auslesen und in Registry schreiben (1)

Frage von Zendara zum Thema Batch & Shell ...

Neue Wissensbeiträge
Tipps & Tricks

Wie Hackt man sich am besten in ein Computernetzwerk ein

(29)

Erfahrungsbericht von Herbrich19 zum Thema Tipps & Tricks ...

Humor (lol)

Bester Vorschlag eines Supporttechnikers ever: APC

(15)

Erfahrungsbericht von DerWoWusste zum Thema Humor (lol) ...

Windows Server

Exchange 2010 Active Directory und Windows Server 2016

(4)

Erfahrungsbericht von Herbrich19 zum Thema Windows Server ...

Heiß diskutierte Inhalte
Internet
gelöst Mitarbeiter surft auf unerwünschter Seite - Wie damit umgehen? (44)

Frage von sabines zum Thema Internet ...

Netzwerke
Wie erstelle ich ein Intranet (19)

Frage von Leonardnet zum Thema Netzwerke ...

LAN, WAN, Wireless
gelöst Eintägige Netzwerkunterbrechung trotz Backupleitung (15)

Frage von iAmbricksta zum Thema LAN, WAN, Wireless ...

Windows Server
Server 2012 R2 - Zugriff Verweigert bei jeglicher Tätigkeit (13)

Frage von DarkLevi zum Thema Windows Server ...