![Пакетное чтение текстовых файлов и замена кавычек переменными в новом файле](https://rvso.com/image/1316775/%D0%9F%D0%B0%D0%BA%D0%B5%D1%82%D0%BD%D0%BE%D0%B5%20%D1%87%D1%82%D0%B5%D0%BD%D0%B8%D0%B5%20%D1%82%D0%B5%D0%BA%D1%81%D1%82%D0%BE%D0%B2%D1%8B%D1%85%20%D1%84%D0%B0%D0%B9%D0%BB%D0%BE%D0%B2%20%D0%B8%20%D0%B7%D0%B0%D0%BC%D0%B5%D0%BD%D0%B0%20%D0%BA%D0%B0%D0%B2%D1%8B%D1%87%D0%B5%D0%BA%20%D0%BF%D0%B5%D1%80%D0%B5%D0%BC%D0%B5%D0%BD%D0%BD%D1%8B%D0%BC%D0%B8%20%D0%B2%20%D0%BD%D0%BE%D0%B2%D0%BE%D0%BC%20%D1%84%D0%B0%D0%B9%D0%BB%D0%B5.png)
У меня есть списки заказов пиццы клиентами, которые я сохранил в 5 отдельных .txt-файлах из моей базы данных в следующем формате:
Filename = 25Percent.TXT
"555-1211"
"555-1212"
"555-1223"
Каждый список представляет собой номер телефона в кавычках, и каждый список имеет разную длину.
Первый вопрос
У меня есть два набора переменных, которые я хотел бы заменить на каждую цитату в 5 текстовых файлах.
Две переменные будут такими:
Var A = < Discount Pizza price for phone number is "
Var B = " 25 % >
Я хотел бы запустить пакетный файл, который считывает каждую строку в текстовом файле и записывает в другой текстовый файл следующее, заменяя кавычки переменными:
New Filename = 25Percentfinished.TXT
< Discount Pizza price for phone number is "555-1211" 25 % >
< Discount Pizza price for phone number is "555-1212" 25 % >
< Discount Pizza price for phone number is "555-1223" 25 % >
Затем я бы повторил для30процентов.txt,35процентов.txt,40процентов.txtи наконец50процентов.txtфайл.
Второй вопрос
Я также хотел бы присоединить 5 новых файлов вместе
решение1
Это простой for
цикл:
for /f "tokens=*" %%a in (25Percent.txt) do (
echo ^< Discount Pizza price for phone number is %%a 25 %%% ^>>>25Percentfinished.txt
)
См for /?
. использование. Это обрабатывает файл построчно, считывая строку в переменную %%a
и добавляя измененную строку в другой файл. Символы <
и >
экранируются с помощью ^
(создавая ^<
и ^>
), поскольку они имеют особое значение в командной строке. Символ %
«экранируется» с помощью , %%%
поскольку он также является специальным символом, но не может быть экранирован, как другие.
Вы можете объединить несколько текстовых файлов следующим образом:
copy file1.txt + file2.txt + file3.txt destination.txt
Или вы можете выполнить цикл с помощью type
и добавить ( >>
) (это объединит все файлы в текущем каталоге, отсортированные в алфавитном порядке по возрастанию):
for %%a in (*.txt) do (
type %%a>>destination.txt
)
решение2
Вы не указали ОС, поэтому я предоставлю решение, которое будет работать, если оно у вас sed
есть.
$ sed -e 's/^\(.*\)$/< Discount Pizza price for phone number is \1 25 % >/' < 25Percent.TXT