darkprodukt
Goto Top

Batch 2 txt Datein Zeilenweise zusammenfügen

Ich habe zwar dieses Thema gefunden, aber die dort genannte Lösung fungtioniert bei mir nicht.
https://www.administrator.de/index.php?content=174339

Ich habe 2 txt Datein:

Datei1
c:\bla\bla\
c:\bla\bla\
c:\bla\bla\bla\bla\
c:\bla\
...

Datei2
datei.txt
dat.rar
date.iso
da.avi
...

Beide datein haben gleich viele Zeilen.

Ich möchte nun, die erste Zeile aus datei1 vor die erste Zeile aus datei2 schreiben, so das sich datein mit vorangstellten Pfaden finden.

Aus einem anderen Thered bin ich darauf gekommen:
set "InFile1=%temp%\tempdatp.txt"   
set "InFile2=%temp%\tempdatn.txt"   
set "OutFile=%temp%\tempnew.txt"   

type >%temp%\tempnew.txt

( 
for /f "tokens=1* delims=" %%a in ('findstr /n "^" "%InFile1%"') do 	(  
									set /p "Line="   
									>> "%OutFile%" echo\%%b!Line!   
									)
) < "%InFile2%"  

Jedoch steht in tempnew.txt nicht z.b. "c:\bla\bla\datei.txt" usw. sondern: "c:\bla\ !Line! "
Was hab ich falsch gemacht?

Und wie müsste ich das abändern damit zwischen dem 1. string und dem 2. string ein [Lehrzeichen] ist?

Content-Key: 180400

Url: https://administrator.de/contentid/180400

Printed on: April 24, 2024 at 19:04 o'clock

Member: bastla
bastla Feb 11, 2012 at 18:47:39 (UTC)
Goto Top
Hallo Darkprodukt und willkommen im Forum!
Was hab ich falsch gemacht?
Kein
setlocal enabledelayedexpansion
verwendet?
Und wie müsste ich das abändern damit zwischen dem 1. string und dem 2. string ein [Lehrzeichen] ist?
Lehrzeichen kann ich Dir auch nicht sagen - ein Leerzeichen müsstest Du nur dazwischen setzen, also
>> "%OutFile%" echo\%%b !Line!
[Edit] Soferne es sich hier um die Fortsetzung Deines vorigen Threads handelt, stellt sich die Frage, ob Du tatsächlich die Zwischendateien brauchst oder nicht
for /f "usebackq delims=" %%i in ("Struck.txt") do for /f "delims=" %%j in ('dir /a-s-h-d /b /s "%%~i"') do echo %%~dpj %%~nxj >>%TEMP%\tempew.txt
genügt ...
[/Edit]

Grüße
bastla
Member: Darkprodukt
Darkprodukt Feb 11, 2012 at 19:20:47 (UTC)
Goto Top
Ok danke, habe beim Abschreiben das "setlocal enabledelayedexpansion" wirklich vergessen

Aber es fungtioniert immer noch nicht face-sad


Ja es ist zwar eine vortsetzung aber so eine datei, wie die, die mir das erstellen würde:
for /f "usebackq delims=" %%i in ("Struck.txt") do for /f "delims=" %%j in ('dir /a-s-h-d /b /s "%%~i"') do echo %%~dpj %%~nxj >>%TEMP%\tempew.txt  

hab ich schon, dass ist nichts anderes als Temp.txt aber ich habe mich ja im vorherigen Thema noch darum bemüht den Pfad in einer anderen Datei als den Dateinamen stehen zu haben und zwar deshalb damit ich in der Dateinamen Datei z.b. die "_" rauslöschen kan usw. also hat das so schon seine Richtigkeit
Member: bastla
bastla Feb 11, 2012 at 19:35:29 (UTC)
Goto Top
Hallo Darkprodukt!

Besonders informativ ist
Aber es fungtioniert immer noch nicht face-sad
zwar gerade nicht ...

... aber da Deine Dateien ja ohnehin keine Leerzeilen enthalten, sollte
@echo off & setlocal enabledelayedexpansion
set "InFile1=%temp%\tempdatp.txt"  
set "InFile2=%temp%\tempdatn.txt"  
set "OutFile=%temp%\tempnew.txt"  

del "%OutFile%" 2>nul  
<"%InFile2%" >>"%OutFile%" (for /f "usebackq delims=" %%a in ("%InFile1%") do set /p "Line=" & echo\%%a !Line!)  
zum Ziel führen ...

Sollte es in den Daten "!" geben, dann:
@echo off & setlocal
set "InFile1=%temp%\tempdatp.txt"  
set "InFile2=%temp%\tempdatn.txt"  
set "OutFile=%temp%\tempnew.txt"  

del "%OutFile%" 2>nul  
<"%InFile2%" >>"%OutFile%" (  
    for /f "usebackq delims=" %%a in ("%InFile1%") do (  
        set /p "Line="  
        setlocal enabledelayedexpansion
        echo\%%a !Line!
        endlocal
    )
)
Grüße
bastla
Member: Darkprodukt
Darkprodukt Feb 11, 2012 at 22:09:51 (UTC)
Goto Top
Danke fungtionier wunderbar. ^^

Jezt habe ich es in mein Batch programm eingebaut und jezt geht es nicht mehr face-sad
:rename
set "InFile1=%temp%\tempdatna.txt"   
set "InFile2=%temp%\temp.txt"   
set "OutFile=%temp%\tempren.txt"   

type >%temp%\tempren.txt
type >%temp%\tempdatna.txt

for /F "delims=" %%i in ('type "%temp%\tempdatn.txt"') do echo "%%i">>tempdatna.txt  

timeout /T 1 >NUL

<"%InFile1%" >>"%OutFile%" 	(  
							for /f "usebackq delims=" %%a in ("%InFile2%") do 	(  
																				set /p "Line="   
																				setlocal enabledelayedexpansion
																				echo\%%a !Line! 
																				endlocal 
																				)
							)

.wandler\wandler %TEMP%\tempren.txt /Q /L /T

for /F "delims=" %%r in ('type "%temp%\tempren.txt"') do 	(  
															ren %%r && echo Umbenannt: %%r
															)


timeout /t 10 >NUL
goto Programm
Kan es sein das Windows meine 130 Zeilen Batch nicht mehr verarbeiten kan oder was ist das Problem?

Mir brummt der kopf und ich finde keinen fehler.

Warscheinlich ist er in diesem abschnitt:
for /F "delims=" %%i in ('type "%temp%\tempdatn.txt"') do echo "%%i">>tempdatna.txt  
Aber ich find ihn nicht ;(
Member: bastla
bastla Feb 11, 2012 at 22:24:55 (UTC)
Goto Top
Hallo Darkprodukt!

jezt geht es nicht mehr
Woran merkst Du das?
Welchen Sinn soll übrigens die Zeile
for /F "delims=" %%i in ('type "%temp%\tempdatn.txt"') do echo "%%i">>tempdatna.txt
haben - wenn Du in der Ausgabedatei Anführungszeichen um die Dateinamen herum haben willst, schreib das doch einfach in die Zeile 17 und spar Dir die Datei "tempdatna.txt" ...

Außerdem: Was steht nach der Zeile 22 (".wandler" sieht übrigens sehr interessant aus) in der Datei "tempren.txt"?

Grüße
bastla