1.2k Aufrufe
Gefragt in Skripte(PHP,ASP,Perl...) von suddy Einsteiger_in (3 Punkte)
Moin Moin liebe Leute,

meine Frage: Ich möchte eine Datei nach einem bestimmten Wert (000000000) durchsuchen und durch Werte die ich Zeile für Zeile aus einer anderen Datei herausziehe ersetzen. Also jedes mal wenn ich eine 00000000 ausgetauscht habe soll er auch im Quelldokument eine Zeile weiterspringen.

Ich habe mir aus dem forum schon ein Programm stiebitzt mit dem ich relativ weit gekommen bin. Nun muss ich nur irgendwie die beiden FOR-Schleifen und Variablenübergaben kombinieren.

Vielleicht bin ich auch auf dem Holzweg und es ist viel einfacher... Habe vor Ewigkeiten mal Batchdateien erstellt aber eigentlich keine Ahnung....

Hier was ich bisher habe:

SET "quell_datei=C:\TEST\V2.txt"
SET "ziel_datei=C:\TEST\LEER.txt"
SET "preis_datei=C:\TEST\PIANULL.txt"
SET "suchen_nach=0000000000"


REM Ausgabe einer Fehlermeldung und Programmabbruch
REM falls die Variable "suchen_nach" nicht definiert ist
IF NOT DEFINED suchen_nach (ECHO Fehler: Die Variable suchen_nach nicht definiert!&GOTO :eof)

REM Loeschen der Ausgabedatei, falls sie (noch) existiert
IF EXIST %ziel_datei% (DEL /f %ziel_datei% 1>NUL 2>NUL)

REM Quell-Datei zeilenweise auslesen
REM und in Variable "zeile" schreiben
FOR /f "delims=" %%i IN ('FINDSTR . "%quell_datei%"') DO (
SET zeile=%%i& CALL :ersetzen !zeile!
) &

FOR /f "delims=" %%k IN ('FINDSTR . "%preis_datei%"') DO (
SET preis=%%k& CALL :ersetzen !preis!
)

GOTO :weiter
:ersetzen
REM innerhalb der Variable "zeile"
REM den Inhalt der Variable "suchen_nach" suchen
REM und diese durch den Inhalt der Variable "ersetzen_durch" ersetzen
SET zeile=!zeile:%suchen_nach%=%preis%!

REM Inhalt der Variable "zeile" in die Ausgabedatei schreiben
IF [!zeile!] EQU [] (ECHO.>>%ziel_datei%) ELSE (ECHO !zeile!>>%ziel_datei%)
GOTO :eof


Vielen Dank für Hilfe und Support!

1 Antwort

0 Punkte
Beantwortet von kicia Mitglied (939 Punkte)
In Batch bin ich leider icht so fortgeschritten, aber....

Ich definiere mal:
Datei A = die Datei mit den Nullen
Datei B = die Datei mit den Zahlen

Wenn ich das richtig überschaue, müsste man die Zeilen in Datei B mit einer Schleife durchlaufen, und für bei jeder gefundenen Zahl die in diesem Moment erste '00000000' in Datei A finden und durch die gefundene Zahl aus B ersetzen.

Pseudocode:
for each ZAHL in B
{
A.findFirst( '00000000' ).replaceBy( ZAHL )
}
...