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-Key: 116046

Url: https://administrator.de/contentid/116046

Printed on: April 16, 2024 at 10:04 o'clock

Mitglied: 77559
77559 May 14, 2009 at 08:20:16 (UTC)
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.
Member: Pantherstyle
Pantherstyle May 14, 2009 at 08:36:55 (UTC)
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.
Mitglied: 77559
77559 May 14, 2009 at 09:25:27 (UTC)
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.
Member: Pantherstyle
Pantherstyle May 14, 2009 at 09:39:16 (UTC)
Goto Top
Danke dir Sehr mein Lord of the Pings. Funktioniert jetzt genau wie es soll!