Per .bat Datei eine Zeile in vorhandene txt Datei einfügen - Teil 2 mit spezieller Anforderung
Hallo Forum,
zunächst erstmal einen herzlichen Gruß und hiermit meinen ersten Beitrag ;)
Der erste Beitrag schließt sich gleich mit einer Frage an.
Folgendes muss ich umsetzen.
ich möchte die erste Zeile meiner txt Datei kopieren und umbedannt in die zweite Zeile einfügen.
Statisch habe ich es schon mit deiner Lösung in diesem Thread geschafft. ...
Das wäre dieser Code:
@echo off & setlocal
set "Zusatz=Ausgabe der Zischendatei: W:\T128-VDB\Ordner\Ordner1\b110124.001\ARCHIV\X0001R.JPG"
set "Nach=Ausgabe der Zischendatei: W:\T128-VDB\Ordner\Ordner1\b110124.001\ARCHIV\X0001.DTA"
set "Datei=D:\Textfile.txt"
set "DateiTmp=%temp%\Textfile.tmp"
move "%Datei%" "%DateiTmp%"
for /f "delims=" %%i in (%DateiTmp%) do (
echo %%i|findstr /b "%Nach%">nul && >>"%Datei%" echo %Zusatz%
)
Mein Problem ist allerdings, das das kopieren und einfügen der Zeilen nicht statisch sonder variabel sein muss.
Die erste Zeile meiner txt Datei lautet:
W:\T128-VDB\Ordner\Ordner1\b110124.001\ARCHIV\X0001.DTA
diese String soll kopiert und als
W:\T128-VDB\Ordner\Ordner1\b110124.001\ARCHIV\X0001R.JPG drunter eingefügt werden.
Wie der Name x0001.DAT schon vermuten lässt, ist dies nur eine von vielen. Es gibt also auch eine Datei mit der Endung x0456.DAT in der ersten Zeile. Daraus muss dann x0456R.JPG werden. usw.
Hast Du hierfür eine Idee wie man dies realisieren kann?
Gruß
Clash
zunächst erstmal einen herzlichen Gruß und hiermit meinen ersten Beitrag ;)
Der erste Beitrag schließt sich gleich mit einer Frage an.
Folgendes muss ich umsetzen.
ich möchte die erste Zeile meiner txt Datei kopieren und umbedannt in die zweite Zeile einfügen.
Statisch habe ich es schon mit deiner Lösung in diesem Thread geschafft. ...
Das wäre dieser Code:
@echo off & setlocal
set "Zusatz=Ausgabe der Zischendatei: W:\T128-VDB\Ordner\Ordner1\b110124.001\ARCHIV\X0001R.JPG"
set "Nach=Ausgabe der Zischendatei: W:\T128-VDB\Ordner\Ordner1\b110124.001\ARCHIV\X0001.DTA"
set "Datei=D:\Textfile.txt"
set "DateiTmp=%temp%\Textfile.tmp"
move "%Datei%" "%DateiTmp%"
for /f "delims=" %%i in (%DateiTmp%) do (
"%Datei%" echo %%i
)
Mein Problem ist allerdings, das das kopieren und einfügen der Zeilen nicht statisch sonder variabel sein muss.
Die erste Zeile meiner txt Datei lautet:
W:\T128-VDB\Ordner\Ordner1\b110124.001\ARCHIV\X0001.DTA
diese String soll kopiert und als
W:\T128-VDB\Ordner\Ordner1\b110124.001\ARCHIV\X0001R.JPG drunter eingefügt werden.
Wie der Name x0001.DAT schon vermuten lässt, ist dies nur eine von vielen. Es gibt also auch eine Datei mit der Endung x0456.DAT in der ersten Zeile. Daraus muss dann x0456R.JPG werden. usw.
Hast Du hierfür eine Idee wie man dies realisieren kann?
Gruß
Clash
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 161281
Url: https://administrator.de/forum/per-bat-datei-eine-zeile-in-vorhandene-txt-datei-einfuegen-teil-2-mit-spezieller-anforderung-161281.html
Ausgedruckt am: 15.05.2025 um 18:05 Uhr
20 Kommentare
Neuester Kommentar
Hallo clash2345!
Das könnte so gehen:
wobei hier zu Testzwecken zunächst jeweils eine Datei "x####-neu.dat" erstellt wird. Wenn das Ergebnis zufriedenstellend ist, kann mit
- zwischen Zeile 15 und 16 eingefügt - die alte Datei durch die neue Fassung ersetzt werden.
Grüße
bastla
[Edit] Fehlendes Anführungszeichen in Zeile 6 ergänzt und im Gegenzug überzähliges Prozentzeichen in Zeile 12 entfernt [/Edit]
Das könnte so gehen:
@echo off & setlocal
set "Ordner=D:\"
set "Maske=x*.txt"
pushd "%Ordner%"
for /f "delims=" %%i in ('dir /b /a-d "%Maske%"') do call :ProcessFile "%%i"
popd
goto :eof
:ProcessFile
set /p Zeile1=<%1
for /f "delims=" %%a in ("%Zeile1%") do set "Zeile2=%%~dpnaR.jpg"
> "%~n1-neu%~x1" echo %Zeile1%
>>"%~n1-neu%~x1" echo %Zeile2%
>>"%~n1-neu%~x1" more +1 %1
goto :eof
move "%~n1-neu%~x1" %1
Grüße
bastla
[Edit] Fehlendes Anführungszeichen in Zeile 6 ergänzt und im Gegenzug überzähliges Prozentzeichen in Zeile 12 entfernt [/Edit]
moin clash,
Gruß Phil
Zitat von @bastla:
wobei hier zu Testzwecken zunächst jeweils eine Datei "x####-neu.dat" erstellt wird. Wenn das Ergebnis
zufriedenstellend ist, kann mit
- zwischen Zeile 15 und 16 eingefügt - die alte Datei durch die neue Fassung ersetzt werden.
wobei hier zu Testzwecken zunächst jeweils eine Datei "x####-neu.dat" erstellt wird. Wenn das Ergebnis
zufriedenstellend ist, kann mit
move "%~n1-neu%~x1" %1
Gruß Phil
Hallo clash2345!
Selbst mit dem überzähligen Prozentzeichen in Zeile 12 (ist oben inzwischen entfernt) kann ich das anhand meines geposteten Batches und einer Testdatei mit dem Inhalt
nicht nachvollziehen ...
Wie sieht denn inzwischen der Batch bei Dir aus?
Grüße
bastla
Selbst mit dem überzähligen Prozentzeichen in Zeile 12 (ist oben inzwischen entfernt) kann ich das anhand meines geposteten Batches und einer Testdatei mit dem Inhalt
W:\T128-VDB\scheck\easy\b110124.001\ARCHIV\X0001.DTA
Zeile2
Zeile3
Zeile4
Wie sieht denn inzwischen der Batch bei Dir aus?
Grüße
bastla
Hallo clash2345!
Dass mehr als
in der Zeile 1 steht, ist jetzt aber neu (und das Ergebnis damit nicht überraschend) ...
Wird die Struktur der Zeile immer so bleiben bzw wird da ev einmal "Zwischendatei" stehen? Sind das zwischen "Zischendatei:" und "W:" Leerzeichen oder TAB?
Grüße
bastla
Dass mehr als
W:\T128-VDB\Ordner\Ordner1\b110124.001\ARCHIV\X0001.DTA
Wird die Struktur der Zeile immer so bleiben bzw wird da ev einmal "Zwischendatei" stehen? Sind das zwischen "Zischendatei:" und "W:" Leerzeichen oder TAB?
Grüße
bastla
Hallo clash2345!

... und dann ersetze die Zeile 12 durch:
Es werden so die ersten 40 Zeichen der Zeile 1 unverändert in die Zeile 2 geschrieben und der ab Zeile 41 angegebene Pfad angepasst ...
Grüße
bastla
Ist dies von Relevanz?
Teste mal kurz mit dem von mir geposteten Beispiel und frage (Dich) dann nochmal ... ... und dann ersetze die Zeile 12 durch:
for /f "delims=" %%a in ("%Zeile1:~40%") do set "Zeile2=%Zeile1:~,40%%%~dpnaR.jpg"
Grüße
bastla
Hallo clash2345!
Ersetze die Zeile 12 durch diese beiden Zeilen:
Um für weitere Änderungen vorzubauen:
liefert die ersten 40 Zeichen aus der Variablen %Zeile1%,
überspringt die ersten 40 Zeichen aus der Variablen %Zeile1% und gibt den Rest (in diesem Fall also den gesuchten Pfad) zurück.
Mit
wird Laufwerksbuchstabe ("drive") und Pfad ("path") des über die Schleifenvariable "%%a" angesprochenen Pfades verwendet und um
den Namensanteil ("name") ohne Typ ("extension") des als Parameter %1 übergebenen Dateinamens sowie den konstanten Wert ".JPG" ergänzt.
Grüße
bastla
Ersetze die Zeile 12 durch diese beiden Zeilen:
for /f "delims=" %%a in ("%Zeile1:~40%") do set "Zeile1=%Zeile1:~,40%%%~dpa%~n1.JPG"
for /f "delims=" %%a in ("%Zeile1:~40%") do set "Zeile2=%Zeile1:~,40%%%~dpnaR.JPG"
%Zeile1:~,40%
%Zeile1:~40%
Mit
%%~dpa
%~n1
Grüße
bastla
Hallo clas2345!
Wenn es also darum geht, an den Anfang der Datei die beschriebenen (sich aus dem Namen der bearbeiteten Datei ergebenden) Zeilen einzufügen und den Rest unverändert zu lassen, sähe das so aus:
Sollte doch der Dateiname aus der originalen ersten Zeile gefragt sein, würde das ab ":ProcessFile" so aussehen:
Grüße
bastla
Wenn es also darum geht, an den Anfang der Datei die beschriebenen (sich aus dem Namen der bearbeiteten Datei ergebenden) Zeilen einzufügen und den Rest unverändert zu lassen, sähe das so aus:
@echo off & setlocal
set "Maske=x*.txt"
set "Ordner=D:\"
pushd "%Ordner%"
for /f "delims=" %%i in ('dir /b /a-d "%Maske%"') do call :ProcessFile "%%i"
popd
goto :eof
:ProcessFile
> "%~n1-neu%~x1" echo %~n1.JPG
>>"%~n1-neu%~x1" echo %~n1R.JPG
>>"%~n1-neu%~x1" type %1
move "%~n1-neu%~x1" %1
goto :eof
:ProcessFile
for /f "delims=" %%a in ("%Zeile1:~40%") do (
echo %%~na.JPG
echo %%~naR.JPG
)>"%~n1-neu%~x1"
>>"%~n1-neu%~x1" type %1
move "%~n1-neu%~x1" %1
goto :eof
bastla