![Lote para ler arquivos de texto e substituir aspas por variáveis em um novo arquivo](https://rvso.com/image/1316775/Lote%20para%20ler%20arquivos%20de%20texto%20e%20substituir%20aspas%20por%20vari%C3%A1veis%20%E2%80%8B%E2%80%8Bem%20um%20novo%20arquivo.png)
Tenho listas de pizzas de clientes que salvei em 5 arquivos .txt separados do meu banco de dados neste formato:
Filename = 25Percent.TXT
"555-1211"
"555-1212"
"555-1223"
Cada lista é um número de telefone entre aspas e cada lista varia em comprimento.
Primeira pergunta
Tenho dois conjuntos de variáveis que gostaria de substituir em cada citação nos 5 arquivos de texto.
As duas variáveis seriam como:
Var A = < Discount Pizza price for phone number is "
Var B = " 25 % >
Gostaria de executar um arquivo em lote que leia cada linha do arquivo de texto e grave em outro arquivo de texto o seguinte, substituindo as aspas pelas variáveis:
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 % >
Então eu repetiria por30 por cento.txt,35 por cento.txt,40 por cento.txte finalmente50 por cento.txtarquivo.
Segunda questão
Eu também gostaria de anexar os 5 novos arquivos juntos
Responder1
É um for
loop simples:
for /f "tokens=*" %%a in (25Percent.txt) do (
echo ^< Discount Pizza price for phone number is %%a 25 %%% ^>>>25Percentfinished.txt
)
Veja for /?
para uso. Isso processa o arquivo linha por linha, lendo a linha na variável %%a
e anexando a linha modificada ao outro arquivo. Os <
e >
são escapados com ^
(making ^<
and ^>
) porque têm um significado especial no prompt de comando. O %
é 'escapável' %%%
porque também é um caractere especial, mas não pode ser escapado como os outros.
Você pode combinar vários arquivos de texto assim:
copy file1.txt + file2.txt + file3.txt destination.txt
Ou você pode fazer um loop type
e acrescentar ( >>
) (isso combinará todos os arquivos no diretório atual, em ordem alfabética crescente):
for %%a in (*.txt) do (
type %%a>>destination.txt
)
Responder2
Você não especifica o sistema operacional, então fornecerei uma solução que funcionará se você tiver sed
disponível.
$ sed -e 's/^\(.*\)$/< Discount Pizza price for phone number is \1 25 % >/' < 25Percent.TXT