pantherstyle
Goto Top

Umgekehrte Reihenfolge bei Variablenerstellung (for-Schleife)

Hallo und einen schönen Vor-Freitag-Morgen!

Ich habe eine for-Schleife und den Wunsch eine bestimmte Datei so in Variablen zerlegen zu lassen, dass diese optimal weiterverarbeitet werden können.

for /f "tokens=1,2 delims=," %%a in (C:\Arbeitskopie\trunk\Daten\SoftwarePaket\Batch-Dateien\data.txt) do (  
echo ++ %%a %%b
	for /f "tokens=1* delims=\" %%1 in (%%a) do call :Sub2 "%%1" "%%2" "%%b"  
)

:PROCESS

echo %1
echo %2
echo %3
echo %1\%2\%3
echo +++++++++++++++++++++++++++++++++++++++++++

Der Code soll später Teil eines anderen Quelltextes werden und ist somit erstmal darauf ausgelegt um zu erkennen, ob die Variablen korrekt zugewiesen wurden. Die Äußere Schleife funktioniert, die innere auch, aber ich hätte gerne die Dateiauswahl umgekehrt. %%a enthält z.B c:\Überordner\Unterordner\Dateiname.dt dieser wird in c: und Überordner\Unterordner\Dateiname.dt zerlegt. Erwünscht wäre aber der umgekehrte Fall: c:\Überordner\Unterordner und Dateiname.dt .

Hier ein Beispiel einer Datei, aus der gelesen würde:

C:\Arbeitskopie\trunk\Daten\SoftwarePaket\Batch Dateien\dateiname1 , 4000
C:\Arbeitskopie\trunk\Daten\SoftwarePaket\dateiname2

Wie man sieht wird in %%a der komplette Pfad und in %%b die Revision gespeichert, wobei diese nicht immer vorliegen muss.


Falls sonstige Syntaktische Probleme enthalten sind würde ich mich auch über eine Verbesserung freuen.

Content-ID: 116046

Url: https://administrator.de/forum/umgekehrte-reihenfolge-bei-variablenerstellung-for-schleife-116046.html

Ausgedruckt am: 08.04.2025 um 06:04 Uhr

77559
77559 14.05.2009 um 10:20:16 Uhr
Goto Top
Zitat von @Pantherstyle:
Moin moin Phanterstyle,

Falls sonstige Syntaktische Probleme enthalten sind würde ich mich auch über eine Verbesserung freuen.

Zuviel der Ehre,
kleine Probleme löst man selbst durch Trial and Error.
Uns als Vor-Debugging-Stufe zu missbrauchen ist schon die Härte.

Gruß
LotPings

PS: Es tut weh, Subs müssen vom normalen Programmfluss getrennt werden!
Da gehört (fasst) immer ein Goto :eof davor.
Pantherstyle
Pantherstyle 14.05.2009 um 10:36:55 Uhr
Goto Top
Ich glaube das mit den Syntaktischen Fehlern ist falsch angekommen. Das war mehr auf die Praktische Anwendungsweise bezogen. z.B dass man eben wie gesagt im normalen gebrauch in die Subroutine ein goto :eof hineinsetzt und von dem Programmablauf getrennt werden sollte. So hab ich das gemeint. Sorry wenns falsch ankam.
--> aufgeworfenes gefixxt (dankefön Lord of the Pings)

Falls noch jemand eine konkrete Lösung zum Problem posten möchte wäre ich sehr dankbar.
77559
77559 14.05.2009 um 11:25:27 Uhr
Goto Top
Hallo nochmal,

wenn du einen Call machst, sollte es auch eine Subroutine mit dem Namen geben face-wink

Ansonsten hast du hier mal ein Beispiel für einen rekursuven Aufruf.

@Echo off&Setlocal
Set Datei=C:\Arbeitskopie\trunk\Daten\SoftwarePaket\Batch-Dateien\data.txt
for /f "tokens=1,2 delims=," %%a in ("%Datei%") do CAll :PROCESS "%%a"  
Goto :Eof
:PROCESS
echo %~dp1 -- %~nx1
set "Pfad=%~dp1"&IF "%Pfad:~4%" NEQ "" CAll :PROCESS "%Pfad:~,-1%"  

Gruß

PS: Ich habe den Dateinamen in Anführungszeichen gesetzt, weil ich nicht deine Ordnerstruktur habe.
Pantherstyle
Pantherstyle 14.05.2009 um 11:39:16 Uhr
Goto Top
Danke dir Sehr mein Lord of the Pings. Funktioniert jetzt genau wie es soll!