У меня есть 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")
Ресурсы(обязательно к прочтению):
- (справочник команд)Индекс AZ командной строки Windows CMD
- (дополнительные особенности)Синтаксис командной строки оболочки Windows CMD
- (
%G
и т.д. специальная страница)Аргументы командной строки (параметры) - (
>
специальная страница)Перенаправление
решение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)
.