WCM Forum

WCM Forum (http://www.wcm.at/forum/index.php)
-   Programmierung (http://www.wcm.at/forum/forumdisplay.php?f=17)
-   -   mit .bat Text ersetzen (http://www.wcm.at/forum/showthread.php?t=150158)

MagicMaxon 12.11.2004 11:12

mit .bat Text ersetzen
 
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?

flinx 12.11.2004 16:15

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?

MagicMaxon 12.11.2004 16:20

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.

flinx 12.11.2004 18:33

Zitat:

hoffe, das war einigermassen verstaendlich.
Nicht ganz. ;)
Willst du:
zzz.txt enthält:
Code:

parameter wert

x 5
y 10

mit:
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

enthält zzz1.txt:
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

:confused: :)

MagicMaxon 12.11.2004 21:22

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???!!!???

flinx 12.11.2004 23:25

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

Rem vor sim wegnehmen und ev. durch Pfade ergänzen.

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


Alle Zeitangaben in WEZ +2. Es ist jetzt 00:53 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
© 2009 FSL Verlag