2495778799

Aus einer txt datei namen auslesen und jeweilige namen.txt mit Textinhalt erstellen

Hallo, ich benötige Hilfe bei einer Automatisierung.

Ich habe eine .txt Datei. Die sieht wie folgt ca. aus:

bsp. liste.txt

Zeile1:  mainboard x570
Zeile2: nvidia rtx 3070

Gibt es die Möglichkeit mit einem Befehl die liste.txt Datei auszulesen und dementsprechend neue .txt Dateien zu erstellen?
Die neuen .txt sollten den Dateinamen der jeweiligen auszulesenden Zeile haben und jede .txt datei sollte einen immergleichen "XYZ" Inhalt haben.

Beispiel:
es werden eine "mainboard x570.txt", "nvidia rtx 3070.txt",... datei erstellt mit dem gleichen "XYZ" Inhalt.

Vielen Dank für die Hilfe
Auf Facebook teilen
Auf X (Twitter) teilen
Auf Reddit teilen
Auf Linkedin teilen

Content-ID: 2495886806

Url: https://administrator.de/forum/aus-einer-txt-datei-namen-auslesen-und-jeweilige-namen-txt-mit-textinhalt-erstellen-2495886806.html

Ausgedruckt am: 01.05.2025 um 15:05 Uhr

1915348599
1915348599 14.04.2022 aktualisiert um 07:06:51 Uhr
Goto Top
PowerShell
Get-Content "D:\datei.txt" | ?{$_ -notmatch "^\s*$"} | %{"XYZ" | Set-Content "D:\$_.txt)" }  
Batch
@echo off
for /f "usebackq delims=" %%a in ("D:\datei.txt") do (>"D:\%%a.txt" echo XYZ)  
...
2495778799
2495778799 14.04.2022 um 15:27:23 Uhr
Goto Top
Perfekt, vielen Dank. Das ist Pretty wonderful
Es funktioniert, wenn der einzufügenede Text aus einer Zeile besteht face-smile

Kann man für XYZ Textinhalt auch mehrzeilige Sachen einfügen? Wenn z.b. 4 Absätze vorhanden sind, auch 4 übernommen werden.

Vielen Dank für die Hilfe
1915348599
1915348599 14.04.2022 aktualisiert um 15:54:43 Uhr
Goto Top
Zitat von @looki-looki:
Kann man für XYZ Textinhalt auch mehrzeilige Sachen einfügen? Wenn z.b. 4 Absätze vorhanden sind, auch 4 übernommen werden.
Klar.
Get-Content "D:\datei.txt" | ?{$_ -notmatch "^\s*$"} | %{  
@'  
Zeile1
Zeile2
Zeile2
Zeile4
'@ | Set-Content "D:\$_.txt)"   
}
2495778799
2495778799 14.04.2022 um 16:22:02 Uhr
Goto Top
Vielen Dank für die schnelle Antwort face-smile
Ich hab es mit der Powershell probiert es klappt.

Ist es auch in einem Batch möglich?

Vielen Dank für die Hilfe
1915348599
Lösung 1915348599 14.04.2022 aktualisiert um 16:50:53 Uhr
Goto Top
Klar, einfach mehrere Echos ausgeben ... Hätte man ja gleich angeben können 🤔
@echo off
for /f "usebackq delims=" %%a in ("D:\datei.txt") do (  
    >"D:\%%a.txt" (  
        echo Zeile1
        echo Zeile2
        echo Zeile3
    )
)
2495778799
2495778799 14.04.2022 um 16:56:39 Uhr
Goto Top
Wundervoll.

Vielen Herzlichen Dank.
2495778799
2495778799 14.04.2022 aktualisiert um 17:07:26 Uhr
Goto Top
Besteht die Möglichkeit das man automatisch sich auf die "liste.txt" beziehen kann in dem Ordner in der die batch datei kopiert wurde bzw. sich gerade befindet. Der Ausgabeordner wäre dementsprechend auch derselbe wo sich die Batch Datei befindet.

Sodass man nicht immer manuell die Pfade ändern muss. copy paste batch fertig face-smile
1915348599
1915348599 14.04.2022 aktualisiert um 20:22:28 Uhr
Goto Top
@echo off
set "scriptdir=%~dp0"  
for /f "usebackq delims=" %%a in ("%scriptdir%liste.txt") do (  
    >"%scriptdir%%%a.txt" (  
        echo Zeile1
        echo Zeile2
        echo Zeile3
    )
)
2495778799
2495778799 15.04.2022 um 00:40:15 Uhr
Goto Top
Es funktioniert perfekt. face-big-smile

Vielen Dank für die Hilfe face-kiss
2495778799
2495778799 18.04.2022 um 17:17:07 Uhr
Goto Top
Hallo die Sache könnte jetzt etwas komplizierter werden, aber evtl. ist es codetechnisch tatsächlich umsetzbar..

In der liste.txt stehen nacheinander Wörter gefolgt von Zahlen. bsp:
"Vorname1 Nachname1 PLZ1 Ort1"
"Vorname2 Nachname2 PLZ2 Ort2"
"Vorname3 zweiterVorname3 Nachname2 PLZ3 Ort3"

Ich habe festgestellt das man die bereits festgelegte Variable %%a auch in den einzufügenden Inhalt einfügen kann.
Jedoch wäre die Frage, Kann man eine Variable so anpassen, das sie den Inhalt der Zeile bis zum Begin der Zahlenfolge enthält?
Bsp variable %%b:
"Vorname1 Nachname1" oder auch "Vorname3 zweiterVorname3 Nachname2"


@echo off
set "scriptdir=%~dp0"  
for /f "usebackq delims=" %%a in ("%scriptdir%liste.txt") do (  
    >"%scriptdir%%%a.txt" (  
        echo 
        echo Name: "?Variable %%b?"  
        echo  
    )
)

Vielen Dank für die Hilfe, falls so etwas überhaupt annährend umsetzbar ist face-smile
1915348599
1915348599 18.04.2022 aktualisiert um 18:00:38 Uhr
Goto Top
@echo off
set "scriptdir=%~dp0"  
PowerShell -EP Bypass -C "Get-Content '%scriptdir%liste.txt' | ?{$_ -notmatch '^\s*$'} | %%{'Name: ' + ($_ -split '\d+').trim() | set-Content \"%scriptdir%$_.txt\"}"  
2495778799
2495778799 18.04.2022 aktualisiert um 18:56:16 Uhr
Goto Top
das ist es. Es klappt perfekt. Einfach nur genial. face-big-smile

Vielen lieben Dank Pretty face-kiss
2495778799
2495778799 18.04.2022, aktualisiert am 20.04.2022 um 22:51:14 Uhr
Goto Top
Habe folgendes probiert zu kombinieren,
Zitat von @1915348599:
@echo off
set "scriptdir=%~dp0"  
PowerShell -EP Bypass -C "Get-Content '%scriptdir%liste.txt' | ?{$_ -notmatch '^\s*$'} | %%{'Name: ' + ($_ -split '\d+').trim() | set-Content \"%scriptdir%$_.txt\"}"  
Zitat von @1915348599:
Get-Content "D:\datei.txt" | ?{$_ -notmatch "^\s*$"} | %{  
@'  
Zeile1
Zeile2
Zeile2
Zeile4
'@ | Set-Content "D:\$_.txt)"   
}
, das hat dann nicht mehr geklappt grin-squint

folgendes habe ich probiert:
@echo off
set "scriptdir=%~dp0"  
PowerShell -EP Bypass -C "Get-Content '%scriptdir%liste.txt' | ?{$_ -notmatch '^\s*$'} | %%{  
@'  
'Name: ' + ($_ -split '\d+').trim()  

Zeile2 text
                                                              
Zeile3 text

Zeile4 text
'@ | set-Content \"%scriptdir%$_.txt\"  
}"  
Was ist schief gelaufen?