Ich habe 10 Dateien wie unten:
file1.txt
(Dateiinhalt = "Ich enthalte Text für Datei1")file2.txt
(Dateiinhalt = "Ich enthalte Text für Datei2")file3.txt
(Dateiinhalt = "Ich enthalte Text für Datei3")
und so
Ich versuche, einen TYPE
Befehl wie diesen auszuführen:
type file*.txt > OUTPUT.txt
Dies funktioniert nur, um den Dateiinhalt auszugeben. Ich brauche für die Ausgabe auch einen Dateinamen für jede Datei.
meine output.txt
Datei sollte so aussehen:
file1.txt = "i contain text for file1"
file2.txt = "i contain text for file2"
file3.txt = "i contain text for file3"
Antwort1
Erstellen Sie eine Batchdatei namens proc.bat, die Folgendes enthält:
echo %1=>>output.txt
type %1>>output.txt
Verwenden Sie dann diesen Befehl:
for %v in (file*.txt) do proc %v
Antwort2
Verwenden Sie den nächsten Befehl aus cmd
dem Fenster:
>output.txt (for /F "tokens=1* delims=:" %G in ('findstr "^" "file*.txt"') do @echo %G = "%H")
Bei Verwendung in einem Batch-Skript verdoppeln Sie die Prozentzeichen in for
den inneren Variablen der Schleife (also %%G
, %%H
anstelle von %G
, %H
):
@echo off
>output.txt (for /F "tokens=1* delims=:" %%G in ('findstr "^" "file*.txt"') do echo %%G = "%%H")
Ressourcen(Pflichtlektüre):
- (Befehlsreferenz)Ein AZ-Index der Windows CMD-Befehlszeile
- (weitere Besonderheiten)Befehlszeilensyntax der Windows CMD-Shell
- (
%G
usw. Sonderseite)Befehlszeilenargumente (Parameter) - (
>
Sonderseite)Umleitung
Antwort3
Du kannst es versuchen:
for /l %f in (1,1,3) do echo|set /p="File %f = " >> output.txt & type file%f.txt >> output.txt
Das Ergebnis ist eine Datei, die wie folgt aussieht:
File 1 = Text in file1
File 2 = Text in file2
File 3 = Text in file3
Der for /l
Befehl zählt in Schritten von 1 bis 3. Im Allgemeinen (start,increment,end)
.