Mehrere Dateien miteinander Verknüpfen
Hallo zusammen!
ich habe keinen Plan wie ich es machen soll und wie ihr es gleich merken werden keine Ahnung von den ganzen Zeugs hier.
In einem Verzeichnis liegen Dateien : Uberschrift_1.txt ....Uberschirft_5.txt
Im gleichem Verzeichis liegen auch Daten-Dateien: Daten1.txt ......usw.
Jetzt soll Daten1 mit Uberschrift1 zu ---> Fertige_Daten1.txt kopiert werden.
Daten2.txt mit Uberschirft2.txt. zu Fertige_Daten2.txt
usw.
Das eine ist schon klar:
Copy Uberschrift1.txt + Daten1.txt Fertige_Daten1.txt
Ich glaube ich muss als erstes den Überschriften-Dateien jeweils eine Variable zuordnen. Das geiche mit den Datendateien.
Dann irgendwie ins copy befehl packen.
for /f %%i in ('dir /b U*.txt') do set bla=%~ni
for /f %%j in ('dir /b D*.txt') do set bla2=%~ni
oder irgendwie verschachteln ?????????????
for /f %%i in ('dir /b U*.txt') do (for /f %%j in ('dir /b D*.txt') do set bla=%~ni )
????????
Danke
ich habe keinen Plan wie ich es machen soll und wie ihr es gleich merken werden keine Ahnung von den ganzen Zeugs hier.
In einem Verzeichnis liegen Dateien : Uberschrift_1.txt ....Uberschirft_5.txt
Im gleichem Verzeichis liegen auch Daten-Dateien: Daten1.txt ......usw.
Jetzt soll Daten1 mit Uberschrift1 zu ---> Fertige_Daten1.txt kopiert werden.
Daten2.txt mit Uberschirft2.txt. zu Fertige_Daten2.txt
usw.
Das eine ist schon klar:
Copy Uberschrift1.txt + Daten1.txt Fertige_Daten1.txt
Ich glaube ich muss als erstes den Überschriften-Dateien jeweils eine Variable zuordnen. Das geiche mit den Datendateien.
Dann irgendwie ins copy befehl packen.
for /f %%i in ('dir /b U*.txt') do set bla=%~ni
for /f %%j in ('dir /b D*.txt') do set bla2=%~ni
oder irgendwie verschachteln ?????????????
for /f %%i in ('dir /b U*.txt') do (for /f %%j in ('dir /b D*.txt') do set bla=%~ni )
????????
Danke
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 171716
Url: https://administrator.de/forum/mehrere-dateien-miteinander-verknuepfen-171716.html
Ausgedruckt am: 11.05.2025 um 15:05 Uhr
9 Kommentare
Neuester Kommentar
Aloha,
sollte doch so funktionieren:
Wenn du Zeile 5 in Anspruch nehmen willst, musst du einfach das erste REM entfernen.
greetz André
sollte doch so funktionieren:
@echo off & setlocal
set "Pfad=E:\Test"
pushd "%Pfad%"
for /f "tokens=1,2 delims=_" %%s in ('dir /b Uberschrift_*.txt') do (
REM >>"%%s_%%t" echo( & REM hiermit könntest du noch eine Leerzeile dazwischen setzen
copy "%%s_%%t" + "Daten_%%t" "Fertige_Daten_%%t">nul
)
popd
pause
goto :eof
Wenn du Zeile 5 in Anspruch nehmen willst, musst du einfach das erste REM entfernen.
greetz André
Aloha,
hmkay, dann eben so:
greetz André
@bastla (ich weiß, du liest das
) 
edit so, damit der Zähler auch seine Daseinsberechtigung hat: Jetzt mir einer Variable mehr
hmkay, dann eben so:
@echo off & setlocal
set "Pfad=E:\Test"
set "grp=Uberschrift"
pushd "%Pfad%"
for /f "delims=" %%s in ('dir /b %grp%*.txt') do call :Ablauf "%%s"
popd
pause
exit /b
:Ablauf
REM >>"%~1" echo( & REM hiermit könntest du noch eine Leerzeile dazwischen setzen
set "Datei=%~1"
call set "Zahl=%%Datei:%grp%=%%"
copy "%~1" + "Daten%Zahl%" "Fertige_Daten%Zahl%">nul
goto :eof
greetz André
@bastla (ich weiß, du liest das
set call_set+=1
^_^ ich zähle ab sofort diese Vorkommen edit so, damit der Zähler auch seine Daseinsberechtigung hat: Jetzt mir einer Variable mehr
Aloha,
Leerzeichen = Typo
(korrigiert)
Ja, Zollzeichen hat gefehlt, hätte zwar die Funktion nicht beeinträchtigt aber eine gerade Anzahl ist beim c&p immer sinnvoll
der Doppelpunkt weist eine Verarbeitung an, in diesem Fall wird der vorkommende Text
es gibt auch andere Verarbeitungen wie z.B.
)
greetz André
Leerzeichen = Typo
set "Datei=%~1"
= Schleifenvariable "%%s"
(mit Zollzeichen) wird als Parameter %1
übergeben und ohne überflüssige Zollzeichen als %~1
in die Variable Datei
geschriebenJa, Zollzeichen hat gefehlt, hätte zwar die Funktion nicht beeinträchtigt aber eine gerade Anzahl ist beim c&p immer sinnvoll
der Doppelpunkt weist eine Verarbeitung an, in diesem Fall wird der vorkommende Text
Uberschrift
durch nichts ersetzt (oder auch weggekürzt), um nur 1a.txt
zum Beispiel zu erhalten, also nur die Nummerierung + Textendunges gibt auch andere Verarbeitungen wie z.B.
%Datei:~-4%
oder andere Variationen davon, die hier aber nicht voll funktionsfähig wären bzw. nicht das gewünschte Ergebnis bringen würden (um das zu verstehen, kannst du am cmd-prompt einfach mit echo %time:~0,1%
und dergleichen herumspielen greetz André
Aloha,
der Parameter beinhaltet schon noch sein eigenens
Im Prinzip gilt:
Tja,
Fragen zur Variablenerweiterung stellst du am Besten die Forensuche
Gibt sehr viel ausführlichen Stoff dazu im Batchbereich bei den Anleitungen, Tipps etc. ich bin nämlich selbst noch Halbwissender, der immer wieder was neues lernt *gg* - bastla, Biber und Friemler sind da eher die Experten hier im Forum
greetz André
der Parameter beinhaltet schon noch sein eigenens
%
-Zeichen Im Prinzip gilt:
Datei=%%s
, da ich jedoch mehrere (variierende) Treffer habe, mit denen ich arbeiten muss, nutze ich ein Unterprogramm, die Alternative wäre mit der Variablenerweiterung enabledelayedexpansion
zu arbeiten, was allerding einige (hier eher nicht) Nebenwirkungen unter manchen Situationen haben kann, darum versuche ich es grundlegend zu vermeiden, sofern es nicht anders geht.Tja,
call
, warum call
, einfach gesagt: Gewohnheit oder Luxus *gg*, ich habe selbst erst vor Kurzem bei bastla diese Verarbeitung entdeckt und auch wenn man hier in dem Fall tatsächlich einfach set "Zahl=%Datei:Uberschrift=%"
nutzen kann, mache ich es gewohnheitsbedingt ebenso mit call
um im Fall der Fälle auch dann wieder nicht mit der Variablenerweiterung zu arbeiten (die dann wirklich teilweise hierbei unangenehm werden kann).Fragen zur Variablenerweiterung stellst du am Besten die Forensuche
greetz André
Hallo Sky (falls Du keinen Einwand gegen die Abkürzung hast
)!

Eigentlich wäre der Zähler aber erst anzuwerfen, wenn "
):
Grüße
bastla
set call_set+=1
^_^ ich zähle ab sofort diese Vorkommen call set
" auch wirklich benötigt wird - also etwa, wenn Du "Uberschrift" in eine Variable packst (wäre ja auch ubersichtlicher set "Entf=Uberschrift"
...
call set "Zahl=%%Datei:%Entf%=%%"
bastla