Пакетный файл Windows с командой TYPE

Пакетный файл Windows с командой TYPE

У меня есть 10 файлов, как показано ниже:

  • file1.txt(содержимое файла = "я содержу текст для файла1")
  • file2.txt(содержимое файла = "я содержу текст для файла2")
  • file3.txt(содержимое файла = "я содержу текст для файла3")

и так


Я пытаюсь выполнить TYPEкоманду типа:

type file*.txt > OUTPUT.txt

это работает только для вывода содержимого файла. Мне нужно, чтобы на выходе также было имя файла для каждого файла.

Мой output.txtфайл должен выглядеть так:

file1.txt = "i contain text for file1"
file2.txt = "i contain text for file2"
file3.txt = "i contain text for file3"

решение1

Создайте пакетный файл с именем proc.bat, который содержит:

echo %1=>>output.txt
type %1>>output.txt

Затем используйте эту команду:

for %v in (file*.txt) do proc %v

решение2

Используйте следующую команду из cmdокна:

>output.txt (for /F "tokens=1* delims=:" %G in ('findstr "^" "file*.txt"') do @echo %G = "%H")

При использовании в пакетном скрипте используйте двойные знаки процента во forвнутренних переменных цикла (т. е. %%G, %%Hвместо %G, %Hсоответственно):

@echo off
>output.txt (for /F "tokens=1* delims=:" %%G in ('findstr "^" "file*.txt"') do echo %%G = "%%H")

Ресурсы(обязательно к прочтению):

решение3

Можешь попробовать:

for /l %f in (1,1,3) do echo|set /p="File %f = " >> output.txt & type file%f.txt >> output.txt

В результате получится файл, который выглядит следующим образом:

File 1 = Text in file1
File 2 = Text in file2
File 3 = Text in file3

Команда for /lсчитает от 1 до 3 с шагом. В общем случае (start,increment,end).

Связанный контент