![]() |
![]() |
|
![]() |
![]() |
|
Programmierung Rat & Tat für Programmierer |
![]() |
|
Themen-Optionen | Ansicht |
![]() |
#1 |
Senior Member
![]() Registriert seit: 02.03.2001
Beiträge: 141
|
![]() Hallo,
wuerde gerne folgendes mit einer batch Datei unter DOS machen: In einer Datei XY soll in einer FOR Schleife jeweils x mal ein bestimmter Wert geaendert werden, also im Prinzip sowas: for (i=1,i<=x,i++) {setze wert in datei xy auf i; run;} Weiss da jemand bescheid? |
![]() |
![]() |
![]() |
#2 |
Inventar
![]() Registriert seit: 08.04.2001
Beiträge: 3.101
|
![]() Bitte erklär etwas genauer, was du haben willst.
Wie ist die Datei aufgebaut und was willst du wo, womit ersetzen? Mit reinen Bordmitteln oder kannst du auch die Unixutils einsetzen? |
![]() |
![]() |
![]() |
#3 |
Senior Member
![]() Registriert seit: 02.03.2001
Beiträge: 141
|
![]() ok, also ich habe eine ganz normale .txt Datei und moechte
da an einer bestimmten Stelle Werte ersetzen. Beispiel: in der Datei steht: ________________________________ parameter wert x 5 y 10 ________________________________ nun moechte ich zum beispiel fuer den parameter x eine for-schleife haben, die mir nacheinander anstelle der 5 zum beispiel die werte 1...10 schreibt. hoffe, das war einigermassen verstaendlich. |
![]() |
![]() |
![]() |
#4 | |
Inventar
![]() Registriert seit: 08.04.2001
Beiträge: 3.101
|
![]() Zitat:
![]() Willst du: zzz.txt enthält: Code:
parameter wert x 5 y 10 Code:
@echo off setlocal if exist zzz1.txt del zzz1.txt set anf=1 set end=5 :begin for /f "tokens=1,*" %%i in ('type zzz.txt') do ( if "%%i"=="x" echo %%i %anf% >>zzz1.txt if not "%%i"=="x" echo %%i %%j>>zzz1.txt ) set /a anf=%anf%+1 if not %anf%==%end% goto begin Code:
parameter wert x 1 y 10 parameter wert x 2 y 10 parameter wert x 3 y 10 parameter wert x 4 y 10 ![]() ![]() |
|
![]() |
![]() |
![]() |
#5 |
Senior Member
![]() Registriert seit: 02.03.2001
Beiträge: 141
|
![]() Nee, nicht ganz ;-)
Ich versuche es nochmal. Also, das Ganze hat den Hintergrund, dass ich ein paar Simulationen hintereinander laufen lassen möchte. Der Aufruf EINER Simulation erfolgt mit: sim parameter.txt wobei sim das Simulationsprogramm ist. Um die Simulationen nun hintereinander laufen zu lassen, muss ich jeweils in der Datei parameter.txt einen Parameter und den Pfad, in den die Ergebnisse geschrieben werden ändern. parameter.txt sieht also ungefähr so aus: __________________________ #parameter.txt result_dir ./result nb_ue 10 __________________________ Ich möchte also mit der batch Datei result und die 10 verändern und danach die Simulation starten, dabei ist der Wert von result egal. Angenommen, ich möchte nb_ue von 1 bis 4 laufen lassen, sollten die Veränderungen der parameter.txt so aussehen: nach 1. Iteration __________________________ #parameter.txt result_dir ./1 nb_ue 1 __________________________ nach 2. Iteration __________________________ #parameter.txt result_dir ./2 nb_ue 2 __________________________ nach 3. Iteration __________________________ #parameter.txt result_dir ./3 nb_ue 3 __________________________ nach 4. Iteration __________________________ #parameter.txt result_dir ./4 nb_ue 4 __________________________ Ich hoffe, dass es jetzt etwas klarer geworden ist???!!!??? |
![]() |
![]() |
![]() |
#6 |
Inventar
![]() Registriert seit: 08.04.2001
Beiträge: 3.101
|
![]() Versuchs mit:
Code:
@echo off setlocal set anf=1 set end=5 :begin if exist zzz1.txt del zzz1.txt if exist parameter1.txt del parameter1.txt for /f "tokens=1,*" %%i in ('type parameter.txt') do ( if "%%i"=="result_dir" ( echo %%i ./%anf% >>parameter1.txt echo >zzz1.txt ) if "%%i"=="nb_ue" ( echo %%i %anf% >>parameter1.txt echo >zzz1.txt ) if not exist zzz1.txt echo %%i %%j>>parameter1.txt ) Rem sim paramter1.txt set /a anf=%anf%+1 if not %anf%==%end% goto begin if exist zzz1.txt del zzz1.txt if exist parameter1.txt del parameter1.txt endlocal Ansonsten ersetze alle '>>parameter1.txt' durch '>>parameter%anf%.txt' und ein rem vor allen 'if exist parameter1.txt del parameter1.txt' --> parameter1.txt - parameter4.txt |
![]() |
![]() |
![]() |
Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1) | |
|
|