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

String abschneiden

Frage Entwicklung Batch & Shell

Mitglied: Pantherstyle

Pantherstyle (Level 1) - Jetzt verbinden

20.04.2009, aktualisiert 09:48 Uhr, 8947 Aufrufe, 14 Kommentare

Hallo ich möchte einen durch den Nutzer angegeben String in Form von: "set PATH=C:\Arbeitskopie\trunk" von einem Anderen String der Form: "C:\Arbeitskopie\trunk\Datenpaket\sqlDatei.sql" abschneiden so, dass ein folgender String entsteht: "Datenpaket\sqlDatei.sql" . Lässt sich das per Batch Datei erledigen? Und wenn ja wie?
Mitglied: LotPings
20.04.2009 um 10:48 Uhr
Du solltest die Systemvariable Path nur dann benutzen/ändern wenn du weißt was du tust.
01.
set MyPath=C:\Arbeitskopie\trunk 
02.
set AndererString=C:\Arbeitskopie\trunk\Datenpaket\sqlDatei.sql 
03.
call set FolgenderString=%%AndererString:%MyPath%=%%
Bitte warten ..
Mitglied: Pantherstyle
20.04.2009 um 11:23 Uhr
Tut mir Leid, aber auch nach 5 maligem durchgehen, verstehe ich die Vorgehensweise nicht. Könntest du das evtl nochmal Step by Step erklären?
Bitte warten ..
Mitglied: bastla
20.04.2009 um 12:17 Uhr
@LotPings
Zum Ausgleich für die Vertretung im anderen Thread springe ich mal hier [Edit] etwas voreilig [/Edit] ein :

In Zeile 3 erfolgt eine Ersetzung - im String
C:\Arbeitskopie\trunk\Datenpaket\sqlDatei.sql
wird der Teil
01.
C:\Arbeitskopie\trunk
(BTW: mit einem abschließenden "\" wär's noch besser) durch den Teil nach dem "=" (nämlich nix, da die beiden Prozentzeichen für den Ausgangsstring gelten) ersetzt - Ergebnis:
\Datenpaket\sqlDatei.sql
Die Erklärung dazu findest Du mit "set /?" als "Ersetzen von Umgebungsvariablen".

Die Schreibweise mit "call" habe ich erstmals bei Biber gesehen; alternativ (und dann vielleicht leichter nachvollziehbar) mit "delayedExpansion":
01.
@echo off & setlocal enabledelayedexpansion 
02.
set MyPath=C:\Arbeitskopie\trunk 
03.
set AndererString=C:\Arbeitskopie\trunk\Datenpaket\sqlDatei.sql 
04.
set FolgenderString=!AndererString:%MyPath%=! 
05.
echo %FolgenderString%
Grüße
bastla
Bitte warten ..
Mitglied: LotPings
20.04.2009 um 12:21 Uhr
Das Beispiel funktioniert aber doch bei dir?

Details stehen in der Hilfe von Set /? Wobei ich zugeben muss das der Text dort extrem knapp gefasst ist.
Das Ersetzen von Umgebungsvariablen wurde folgendermaßen erweitert: 
 
    %PATH:str1=str2% 
 
Dies erweitert die PATH-Umgebungsvariable, wobei jede Instanz von "str1" im erweiterten Ergebnis mit "str2" ersetzt wird. "str2" kann die leere Zeichenfolge sein, um alle Instanzen von "str1" aus der erweiterten Ausgabe zu löschen. Wenn "str1" mit einem Sternchen beginnt, steht "str1" für alles zwischen dem Anfang der erweiterten Ausgabe bis zum ersten Auftreten des übrigen Abschnitts von "str1".
In meinem Beispiel ist str1 der Inhalt einer anderen Variable nämlich MyPath str2 ist leer - es wird also gegen nichts getauscht = gelöscht.
Damit Cmd bei der Abarbeitung zuerst den Inhalt von MyPath einsetzt arbeite ich mit einem Trick der der DelayedExpansion (siehe Hilfe von cmd und/oder setlocal) gleichkommt. Der pseudo Call, denn Set ist ja kein externes Programm oder eine interne Subroutine, bewirkt mit Hilfe der verdoppelten Prozentzeichen dass die Ersetzung erst als zweiter Schritt ausgeführt wird.
Bitte warten ..
Mitglied: Pantherstyle
20.04.2009 um 12:44 Uhr
So wie ich es versucht habe klappt es noch nicht aber vermutlich werdet Ihr sofort sehen warum ;D
01.
:: Eintragung der Pfade 
02.
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: 
03.
for /F "tokens=1* delims=\" %%i IN (%HELP_PATH%\filtertag.txt) DO ( 
04.
echo %%i\%%j 
05.
call set Stringteiler=%%i\%%j:%TAG_PATH%=%% >> %HELP_PATH%\tagpfade.txt 
06.
07.
 
08.
for /F "tokens=1* delims=\" %%i IN (%HELP_PATH%\filterbranch.txt) DO ( 
09.
echo %%i\%%j 
10.
call set Stringteiler=%%i\%%j:%TAG_PATH%=%% >> %HELP_PATH%\branchpfade.txt 
11.
12.
:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
Bitte warten ..
Mitglied: LotPings
20.04.2009 um 12:57 Uhr
Nein die Ersetzung geht nur mit normalen Variablen mit % vorne und hinten dran. Nich tmit Scheleifenvariablen und auch nicht mit Kommandozeilen Argumenten.

Aber Ich verstehe den Grund für das Splitting nicht, soll das später auf andere Laufwerke/Verzecihnisse angewendet werden?

Viel einfacher ist es wenn du Token anpasst. Du führst hier auch ständig neue uns unbekannte Variablen ein - Ich finde es extrem schwierig dir zu helfen.
Entweder Du schilderst uns dein eigentliches Problem oder Du versuchst das Schritt für Schritt zu verstehen und zu verarbeiten.
Inzwischen geht dies mMn weit über normales Helfen hinaus.

Gruß
LotPings
Bitte warten ..
Mitglied: Pantherstyle
20.04.2009 um 13:05 Uhr
Die Batch funktioniert ja an sich, allerdings wurde mir aufgetragen, eine Variante ohne das Ersetzen von tokens zu kreieren. Damit aber die Syntax funktioniert, muss unbedingt der Variable Teil vor den eigentlichen Ordnern und Dateinamen eliminiert werden, da ein Vergleich der Dateinamen stattfindet. Deshalb, wenn schon die beiden Pfade z.B. c:\M_Shell\dateiname und c:\T_Shell\dateiname2 unterschiedlich sind, dann wird die Batch niemals feststellen, dass 2 Dateien gleich sind, da immer der Pfad unterschiedlich ist. Deshalb muss dieser Variable Teil weg. Das mit dem einführen neuer Variablen ist nur halb Richtig, da ich von Anfang an meinte geschildert zu haben, dass ich eine feste Variable, namens PATH (in dem Fall TAG_PATH) von einem anderen String kürzen wollte (dieser setzt sich aus %%i und%%j zusammen). Leider kann man ja innerhalb einer for-Schleife keine Pfade setzen. Ich hoffe der Fall ist nun klarer.
Bitte warten ..
Mitglied: bastla
20.04.2009 um 14:56 Uhr
Hallo Pantherstyle!

Dein Code müsste auf ein Unterprogramm zurückgreifen. Außerdem muss zuerst der Teilstring gebildet werden und erst danach kannst Du diesen in eine Datei schreiben :
01.
:: Eintragung der Pfade 
02.
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: 
03.
for /F "tokens=1* delims=\" %%i IN (%HELP_PATH%\filtertag.txt) DO ( 
04.
    echo %%i\%%j 
05.
    call :GetRelPath "%%i\%%j" "%TAG_PATH%" 
06.
07.
echo %RelPath%>>%HELP_PATH%\tagpfade.txt 
08.
 
09.
for /F "tokens=1* delims=\" %%i IN (%HELP_PATH%\filterbranch.txt) DO ( 
10.
    echo %%i\%%j 
11.
    call :GetRelPath "%%i\%%j" "%TAG_PATH%" 
12.
13.
echo %RelPath%>>%HELP_PATH%\branchpfade.txt 
14.
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: 
15.
 
16.
 
17.
goto :eof 
18.
 
19.
:GetRelPath 
20.
set "Full=%~1" 
21.
set "Part=%~2" 
22.
call set "RelPath=%%Full:%Part%=%%" 
23.
goto :eof
[Edit] Unnötige Überlegungen zur Zerlegung entfernt ... []/Edit]
Ansonsten noch ein Hinweis: Das Zerlegen eines Pfades in die Bestandteile "Laufwerk" ("drive"), "Pfad" ("path"), "Dateiname" ("name") und "-typ" ("extension") kannst Du so durchführen:
01.
for /f "delims=" %%i in (%HELP_PATH%\filtertag.txt) do ( 
02.
    echo %%~di 
03.
    echo %%~pi 
04.
    echo %%~ni 
05.
    echo %%~xi 
06.
    REM und als Kombination 
07.
    echo %%~nxi 
08.
)
Näheres dazu gegen Ende von "for /?" ...

Grüße
bastla
Bitte warten ..
Mitglied: Pantherstyle
23.04.2009 um 11:15 Uhr
Hallo,
sorry dass ich mich länger nicht gemeldet habe (viel zu tun).
Ich habe deine Version getestet (ohne Erfolg) und darauf meine Eigene Verison aufgebaut (auch ohne Erfolg):

01.
echo off 
02.
:: Veränderbar durch den Benutzer 
03.
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: 
04.
:: Eingabe der Pfade 
05.
set TAG_PATH=C:\Arbeitskopie\trunk\M_SHELL_20090402 
06.
set BRANCH_PATH=C:\Arbeitskopie\trunk\T_Shell20090403 
07.
set HELP_PATH=C:\Arbeitskopie\Hilfsordnerbflexxdateien 
08.
set WORK_PATH=C:\Arbeitskopie\trunk\Daten\SoftwarePaket\Batch-Dateien 
09.
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: 
10.
 
11.
:: Eintragung der Pfade 
12.
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: 
13.
for /F "skip=2 tokens=1* delims=\" %%i IN (%HELP_PATH%\filtertag.txt) DO call :sub1 %%i %%j %TAG_PATH% %HELP_PATH% 
14.
echo ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 
15.
for /F "skip=2 tokens=1* delims=\" %%i IN (%HELP_PATH%\filterbranch.txt) DO :sub2 %%i %%j %BRANCH_PATH% %HELP_PATH% 
16.
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: 
17.
 
18.
goto :eof 
19.
 
20.
:sub1 
21.
set BASIC_PATH=%1\%2 
22.
set TAG_PATH=%3 
23.
set HELP_PATH=%4 
24.
call set Stringteiler=%TAG_PATH%:%BASIC_PATH%=%% >> %HELP_PATH%\tagpfade.txt 
25.
goto :eof 
26.
 
27.
:sub2 
28.
set BASIC_PATH=%1\%2 
29.
set BRANCH_PATH=%3 
30.
set HELP_PATH=%4 
31.
call set Stringteiler=%BRANCH_PATH%:%BASIC_PATH%=%% >> %HELP_PATH%\branchpfade.txt 
32.
goto :eof
Ich nehme an, es hängt mit der Syntax call set Stringteiler Zusammen, doch inwiefern?
Bitte warten ..
Mitglied: Pantherstyle
27.04.2009 um 08:20 Uhr
Hallo,
die Frage ist noch präsent und ich wollte sie nur noch mal ins Gedächtnis zurück hohlen.

Hier nochmal der aktualisierte Code:
01.
echo off 
02.
:: Veränderbar durch den Benutzer 
03.
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: 
04.
:: Eingabe der Pfade 
05.
set TAG_PATH=C:\Arbeitskopie\trunk\M_SHELL_20090402 
06.
set BRANCH_PATH=C:\Arbeitskopie\trunk\T_Shell20090403 
07.
set HELP_PATH=C:\Arbeitskopie\Hilfsordnerbflexxdateien 
08.
set WORK_PATH=C:\Arbeitskopie\trunk\Daten\SoftwarePaket\Batch-Dateien 
09.
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: 
10.
 
11.
 
12.
:: Ausgabe der Nutzerangaben 
13.
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: 
14.
echo TAG Pfad   : %TAG_PATH% 
15.
echo SchemaTag Pfad   : %TAG_PATH_STRKT% 
16.
echo Branch Pfad: %BRANCH_PATH% 
17.
echo SchemaBranch Pfad: %BRANCH_PATH_STRKT% 
18.
echo Hilfe Pfad: %HELP_PATH% 
19.
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: 
20.
 
21.
 
22.
:: Vorbereitung der Verarbeitung 
23.
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: 
24.
rd %HELP_PATH% /s /q 
25.
mkdir %HELP_PATH% 
26.
cd %TAG_PATH% 
27.
dir > %HELP_PATH%\indextag.txt /B /S /O-g 
28.
cd %BRANCH_PATH% 
29.
dir > %HELP_PATH%\indexbranch.txt /B /S /O-g 
30.
 
31.
:: Herausfiltern der .sql Dateien 
32.
find /V "svn" %HELP_PATH%\indextag.txt > %HELP_PATH%\filtertag.txt 
33.
find /V "svn" %HELP_PATH%\indexbranch.txt > %HELP_PATH%\filterbranch.txt 
34.
 
35.
:: Löschen der Mittlerdateien 
36.
del %HELP_PATH%\indextag.txt 
37.
del %HELP_PATH%\indexbranch.txt 
38.
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: 
39.
 
40.
:: Eintragung der Pfade 
41.
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: 
42.
for /F "tokens=1* delims=\" %%i IN (%HELP_PATH%\filtertag.txt) DO call :sub1 %%i %%j %TAG_PATH% 
43.
for /F "tokens=1* delims=\" %%i IN (%HELP_PATH%\filterbranch.txt) DO call :sub2 %%i %%j %BRANCH_PATH% 
44.
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: 
45.
 
46.
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: 
47.
:: Neue Dateien 
48.
for /F "tokens=1* delims=\" %%i IN (%HELP_PATH%\branchpfade.txt) DO ( 
49.
echo %%i\%%j 
50.
findstr "%%j" %HELP_PATH%\tagpfade.txt 
51.
if ERRORLEVEL 1 echo %%i\%%j >> %HELP_PATH%\neu.txt 
52.
53.
:: Vorhandene Dateien 
54.
for /F "skip=4 tokens=1* delims=\" %%i IN (%HELP_PATH%\tagpfade.txt) DO ( 
55.
echo %%i\%%j 
56.
findstr "%%j" %HELP_PATH%\branchpfade.txt 
57.
if not ERRORLEVEL 1 echo %%i\%%j >> %HELP_PATH%\vorhanden.txt 
58.
59.
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: 
60.
 
61.
:: Erfassung von veraenderten Dateien 
62.
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: 
63.
for /F "tokens=1*" %%i IN (%HELP_PATH%\vorhanden.txt) DO ( 
64.
echo %%i 
65.
 
66.
fc %TAG_PATH%\%%i %BRANCH_PATH%\%%i 
67.
if ERRORLEVEL 1 echo %%i >> %HELP_PATH%\veraendert.txt 
68.
69.
goto eof 
70.
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: 
71.
 
72.
:sub1 
73.
set BASIC_PATH=%1\%2 
74.
set TAG_PATH=%3 
75.
echo %BASIC_PATH% 
76.
call set Stringteiler=%BASIC_PATH%:%TAG_PATH%=%% >> %HELP_PATH%\tagpfade.txt 
77.
goto :eof 
78.
 
79.
:sub2 
80.
set BASIC_PATH=%1\%2 
81.
set BRANCH_PATH=%3 
82.
echo %BASIC_PATH% 
83.
call set Stringteiler=%BASIC_PATH%:%BRANCH_PATH%=%% >> %HELP_PATH%\branchpfade.txt 
84.
goto :eof
Bitte warten ..
Mitglied: LotPings
27.04.2009 um 10:37 Uhr
Zitat von Pantherstyle:
Hallo,
die Frage ist noch präsent und ich wollte sie nur noch mal ins Gedächtnis zurück hohlen.

Hallo Pantherstyle,
die Sammlung an Codestücken wächst, aber weder ist deine Aufgabenstellung ganz klar noch ist dein Feedback ausreichend.
Es funktioniert nicht, hilft Niemand.
Welches Ergebnis erwartest Du mit Beispieldaten vorher + nachher.

allerdings wurde mir aufgetragen, eine Variante ohne das Ersetzen von tokens zu kreieren.
Das verstehe ich jetzt überhaupt nicht. Ist das eine Übungsaufgae? Dann knie dich selber rein, so lernt man Besten.

"Tokens" sind ein Bestandteil des For /F Befehls und dienen der Bestimmung welche der durch "Delmis" getrennten Elemente weiterverwendet werden sollen. Siehe For /F

Gruß
LotPings
Bitte warten ..
Mitglied: Pantherstyle
27.04.2009 um 10:51 Uhr
Die Verarbeitung / Funktion der Tokens kenne ich ja. Das mit dem Auftrag tokens nicht zu verwenden resultiert daraus, das auch Andere mein Programm verwenden sollen und zur vermeidung von Fehlern sollen nur die Pfade angegeben werden. Die Ausgabe des Programms meinte ich schon beschrieben zu haben nämlich:

Pfad A
C:\ÜberOrdner\Unterüberordner\

Pfad B
C:\ÜberOrdner\UnterÜberOrdner\UnterOrdner\Datei

sollen in
Pfad C
UnterOrdner\Datei

unmgewandelt werden, da die Dateipfade später nach diesem Muster verarbeitet/verglichen werden.
Bitte warten ..
Mitglied: Biber
27.04.2009 um 11:35 Uhr
Moin Pantherstyle,

ich kann LotPings Eindruck nur bestätigen - die eingangs genannte Aufgabenstellung korrespondiert wenig bis gar nicht mit Deinen geposteten Schnipseln und die Lösungsstrategien in den Antworten scheinst Du zu überlesen.

Auch ich habe wenig Anlass zur Hoffnung, dass mein Kommentar von Dir berücksichtigt wird, aber diesen letzten Versuch mache ich noch.

bastla und LotPings haben doch oben eine Lösung gepostet, die Du, ich, wir alle jederzeit am CMD-Prompt verifizieren könnten:
[Eingegebene Zeilen mit ">" gekennzeichnet]
01.
>set "pfadA=C:\ÜberOrdner\Unterüberordner" 
02.
>set "pfadB=C:\ÜberOrdner\UnterÜberOrdner\UnterOrdner\Datei" 
03.
>call echo Stringteiler=%PfadB:%PfadA%=% 
04.
Stringteiler=\UnterOrdner\Datei
---> Das würde also klappen, wenn Du es direkt in Deine "branchpfade schreiben lässt OHNE SET und OHNE das "Stringteiler=", aber WTF soll denn passieren bei Deinem
Set Stringteiler=... >>branchpfade.txt"
???
01.
>set something=whatever>bla.txt 
02.
>type bla.txt 
03.
 
04.
>
...da der "Set var=wert"-Befehl keine Ausgabe erzeugt wird auch nie etwas Brauchbares in der "branchpfade.txt" stehen.
Und die Variable %Stringteiler% verwendest Du ja auch nicht -- was also ist Deine Erwartungshaltung???

Abgesehen davon - IMHO ist es sinnvoller, diese ganze SVN-Workspace-Ein-und-Auscheckerei so zu machen wie 283.000 andere User auch:
  • Definiert auf den Clients mit dem SUBST-Befehl ein Laufwerk T: wie "trunk" oder "team"
SUBST T: C:\Arbeitskopie\trunk
...dann hast Du Deinen so genannten "Restpfad" immer richtig.

Grüße
Biber
Bitte warten ..
Mitglied: Pantherstyle
27.04.2009 um 13:25 Uhr
Hallo,
es funktioniert jetzt. Mir ist aufgefallen, dass ich bei meinen Versuchen immer einen Fehler (wie mir schien) verändert zu haben.
Ich habe aus %%Pfad:%PfadA%=%%
immer %Pfad%:%PfadA%=%%
gemacht, wodurch eine Ausgabe wie die folgende Zustande kam:
C:\Arbeitskopie\trunk:C:\Arbeitskopie\trunk\Unterordner\Datei

Danach habe ich jetzt einfach ALLES BLIND übernommen und herumexperimentiert. Dabei ist mir aufgefallen, das außerhalb der Subroutine die oben gezeigte Ausgabe kam, aber innerhalb der Subroutine das gewünschte Ergebnis vorlag. Der folgende Algorythmus geht jetzt:
01.
:: Eintragung der Pfade 
02.
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: 
03.
for /F "tokens=1* delims=\" %%i IN (%HELP_PATH%\filtertag.txt) DO ( 
04.
    echo %%i\%%j 
05.
    call :GetTagRelPath "%%i\%%j" "%TAG_PATH%" 
06.
07.
 
08.
for /F "tokens=1* delims=\" %%i IN (%HELP_PATH%\filterbranch.txt) DO ( 
09.
    echo %%i\%%j 
10.
    call :GetBranchRelPath "%%i\%%j" "%BRANCH_PATH%" 
11.
12.
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: 
13.
 
14.
 
15.
goto :eof 
16.
 
17.
:GetTagRelPath 
18.
set "Full=%~1" 
19.
set "Part=%~2" 
20.
call set "RelPath=%%Full:%Part%=%%" 
21.
echo %RelPath% >>%HELP_PATH%\branchpfade.txt 
22.
goto :eof 
23.
 
24.
:GetBranchRelPath 
25.
set "Full=%~1" 
26.
set "Part=%~2" 
27.
call set "RelPath=%%Full:%Part%=%%" 
28.
echo %RelPath% >>%HELP_PATH%\tagpfade.txt 
29.
goto :eof
Danke an ALLE die geholfen haben. Besonderen Dank an die, die die Nerven nicht verloren haben ;D
Bitte warten ..
Neuester Wissensbeitrag
Ähnliche Inhalte
Batch & Shell
Dateinamen nach Zeichnen abschneiden - Batch-Shell (9)

Frage von cberndt 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 ...

C und C++
String einlesen in Array und wieder ausgeben von hinten (4)

Frage von Protected zum Thema C und C ...

Batch & Shell
gelöst Poweshell Script soll String ersetzen und die leere Zeile löschen (4)

Frage von Mars123 zum Thema Batch & Shell ...

Heiß diskutierte Inhalte
Windows Userverwaltung
Ausgeschiedene Mitarbeiter im Unternehmen - was tun mit den AD Konten? (32)

Frage von patz223 zum Thema Windows Userverwaltung ...

LAN, WAN, Wireless
FritzBox, zwei Server, verschiedene Netze (21)

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

Viren und Trojaner
Aufgepasst: Neue Ransomware Goldeneye verbreitet sich rasant (20)

Link von Penny.Cilin zum Thema Viren und Trojaner ...

Windows Netzwerk
Windows 10 RDP geht nicht (18)

Frage von Fiasko zum Thema Windows Netzwerk ...