set Problem

Hier dürfen auch unregistrierte Besucher posten.
Antworten
GASt

set Problem

Beitrag von GASt »

Hallo,
ich bastle gerade an einer Batch Datei. Alles funktioniert soweit bis auf eine Kleinigkeit.

Code: Alles auswählen

:: Erfassung der Revision von veränderten Dateien
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
for /F "tokens=1*" %%i IN (%HELP_PATH%\vorhanden.txt) DO (

echo %%i
svn log -q %TAG_PATH%\%%i > %HELP_PATH%\revtag.txt

for /F "eol=- tokens=1" %%i IN (%HELP_PATH%\revtag.txt) DO (
set ausgabe=%%i)
echo %ausgabe% %%i  >> %HELP_PATH%\puzzletag.txt 

svn log -q %BRANCH_PATH%\%%i > %HELP_PATH%\revbranch.txt
for /F "eol=- tokens=1" %%i IN (%HELP_PATH%\revbranch.txt) DO (
set ausgabe=%%i)
echo %ausgabe% %%i >> %HELP_PATH%\puzzlebranch.txt
)
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
In vorhanden.txt befinden sich Dateinamen alla dateiname.sql diese werden per svn log auf ihre Revision hin geprüft. Die Revision wird über die innere Schleife "zurechtgestuzt" auf z.B r39. innerhalb der Schleife wird set ausgabe mit dem revisionswert belegt. Im Anschluss soll der Revisionswert vor dem Dateinamen ausgegeben und in puzzle gespeichert werden.
das erhofft Bild wäre
r32 dateiname.sql
r29 dateiname2.sql
r49 dateiname3.sql
...

Nun zum Problem. Der Revisionswert wird zwar Einwandfrei auf das gewünschte zugeschnitten, jedoch, wenn die Schleife durchlaufen wird, nimmt ausgabe den 2. Wert an und behält diesen permanent, so dass die Ausgabe folgende ist.
r29 dateiname.sql
r29 dateiname2.sql
r29 dateiname3.sql
....

Was mache ich falsch? Eventuelle Ansätze. Löschen von ausgabe nach der Anwendung. Überschreiben von ausgabe oder ein völlig anderer Weg?
gbalzarek
HELP.COM-Benutzer
Beiträge: 26
Registriert: Mo 9. Feb 2009, 22:27
Wohnort: D-Südwest

Beitrag von gbalzarek »

ohne es jetzt näher untersucht zu haben:
Hast Du zwei Schleifen ineinander geschachtelt und sie verwenden die gleiche Laufvariable %%i ?
Gast

Beitrag von Gast »

Sie benutzen zwar die gleichen Laufvariablen, aber das ist nicht das Problem (hab ich getestet). Gibt es vielleicht eine Möglichkeit eine Art "echo %%i >> text.txt" zu machen, bei dem bei erneutem aufruf des echos keine neue Zeile angefangen wird?

z.B
echo r29 >> text.txt (ohne neue Zeile)
echo dateiname >> text.txt (mit neuer Zeile)

Als Ergebnis: r29 dateiname

Oder gibt es die möglichkeit eine Datei der Form:
r29
dateiname
r32
dateiname2
usw.

in eine Datei der Form
r29 dateiname
r32 dateiname
usw.

umzuwandeln?
gbalzarek
HELP.COM-Benutzer
Beiträge: 26
Registriert: Mo 9. Feb 2009, 22:27
Wohnort: D-Südwest

Beitrag von gbalzarek »

Ich habe bei der Suche im Internet irgendwo gelesen, daß in Batchdateien geschachtelte For-Schleifen nicht zulässig sind.
Welches DOS hast Du denn?
GASt

Beitrag von GASt »

Ich habe jetzt folgendes zum laufen (und relativen funktionieren) gebracht

Code: Alles auswählen

for /F "tokens=1*" %%i IN (%HELP_PATH%\vorhanden.txt) DO (
	echo %%i
	svn log -q %TAG_PATH%\%%i > %HELP_PATH%\revtag.txt

	for /F "eol=- tokens=1" %%j IN (%HELP_PATH%\revtag.txt) DO (
		echo %%j %%i >> %HELP_PATH%\puzzletag.txt 
		)

	svn log -q %BRANCH_PATH%\%%i > %HELP_PATH%\revbranch.txt
	for /F "eol=- tokens=1" %%j IN (%HELP_PATH%\revbranch.txt) DO (
		echo %%j %%i  >> %HELP_PATH%\puzzlebranch.txt 
	)
)
Ich möchte nun allerdings, dass die for Schleife nach dem 1. Durchlauf verlassen wird. Ich habe das schon über ein goto versucht, das nach draußen führen sollte, aber das führte nur zu einem Syntaxfehler. Wie kann ich die for Schleife so umschreiben, dass sie durchgeführt, aber beim 1. mal verlassen wird?
GASt

Beitrag von GASt »

Ich benutze eine normale cmd DOS Box
Gast

Beitrag von Gast »

...

Das ist kein DOS, das ist eine kommandozeile!
Antworten