Windows batch – voeg meerdere tekstbestanden samen tot één

Ik moet een script maken dat meerdere tekstbestanden samenvoegt tot één.
Ik weet dat het eenvoudig te gebruiken is

type *.txt > merged.txt

Maar de vereiste is om “bestanden van dezelfde dag samen te voegen tot bestand day_YYYY-DD-MM.txt”. Ik ben een Linux-gebruiker en Windows-batch is een hel voor mij. Het is Windows XP.


Antwoord 1, autoriteit 100%

Windows type-opdracht werkt op dezelfde manier als UNIX cat.

Voorbeeld 1:Samenvoegen met bestandsnamen (Hiermee worden file1.csv & file2.csv samengevoegd om concat.csv te maken)

type file1.csv file2.csv > concat.csv

Voorbeeld 2:Bestanden met patroon samenvoegen (Hiermee worden alle bestanden met de extensie csv samengevoegd en concat.csv gemaakt)

Bij gebruik van asterisk(*) om alle bestanden samen te voegen. Gebruik NIET dezelfde extensie voor het doelbestand (bijv. .csv).Er moet een verschil in patroon zijn, anders wordt ook rekening gehouden met het doelbestand bij de aaneenschakeling

type  *.csv > concat_csv.txt

Antwoord 2, autoriteit 44%

In de basis wordt het samenvoegen van bestanden uit een batchbestand gedaan met ‘kopiëren’.

copy file1.txt + file2.txt + file3.txt concattedfile.txt

Antwoord 3, autoriteit 14%

Plaats alle bestanden die moeten worden gekopieerd in een aparte map, plaats ze voor het gemak in de c-schijf.

Open opdrachtprompt – windows>type cmd>select opdrachtprompt.

U kunt zien dat de standaard directory wijst – bijvoorbeeld: C:[Folder_Name]>.
Wijzig de map zodat deze verwijst naar de map waarin u de te kopiëren bestanden hebt geplaatst met de opdracht ‘ cd [Folder_Name] ‘.

Na het aanwijzen van de map – typ ‘dir’ waarin alle bestanden in de map worden weergegeven, om er zeker van te zijn dat alles op zijn plaats is.

Nu typt: ‘COPY * .TXT [NEWFILE_NAME] .TXT’ en druk op ENTER.

klaar!

Alle tekst in afzonderlijke bestanden worden gekopieerd naar [NewFile_Name] .txt


4, Autoriteit 11%

Navigeer naar de map waarin uw tekstbestanden zijn. Op het opdrachtprompt gebruik:

copy *.txt combined.txt

Waar combined.txtis de naam van het nieuw gemaakte tekstbestand.


5, Autoriteit 6%

Ik herhaal een aantal van de reeds gemaakt punten, maar inclusief een 3e voorbeeld dat helpt bij het hebben van bestanden in mappen die u wilt aaneenschakelen.

Voorbeeld 1 (bestanden in dezelfde map):

copy file1.txt+file2.txt+file3.txt file123.txt

Voorbeeld 2 (bestanden in dezelfde map):

type *.txt > combined.txt

Voorbeeld 3 (bestanden bestaan ​​in meerdere mappen, veronderstelt NewFileoutput.txt bestaat niet):

for /D %f in (folderName) DO type %f/filename.txt >> .\newfileoutput.txt

6, Autoriteit 5%

We kunnen normale CAT-opdracht gebruiken om bestanden samen te voegen.

D: & GT; CAT * .CSV & GT; outputs.csv


7

Probeer dit:

@echo off
set yyyy=%date:~6,4%
set mm=%date:~3,2%
set dd=%date:~0,2%
set /p temp= "Enter the name of text file: "
FOR /F "tokens=* delims=" %%x in (texto1.txt, texto2.txt, texto3.txt) DO echo %%x >> day_%temp%.txt

Deze code vraagt ​​u om de naam van het bestand in te stellen na “Day_” waar u de datum kunt invoeren.
Als u uw bestand wilt noemen, zoals de werkelijke datum, kunt u dit doen:

FOR /F "tokens=* delims=" %%x in (texto1.txt, texto2.txt, texto3.txt) DO echo %%x >> day_%yyyy%-%mm%-%dd%.txt

8

Cat “invoerbestanden” & GT; “uitvoerbestanden”

Dit werkt in PowerShell, hetgeen de Windows Preferred Shell in huidige Windows-versies is, daarom werkt het. Het is ook de enige versie van de bovenstaande antwoorden om met grote bestanden te werken, waarbij ‘type’ of ‘kopie’ faalt.

Other episodes