Como posso usar um arquivo em lotes para gravar em um arquivo de texto?

192

Eu preciso criar um script que possa gravar uma linha de texto em um arquivo de texto no mesmo diretório que o arquivo em lotes.

09stephenb
fonte

Respostas:

309

Você pode usar echoe redirecionar a saída para um arquivo de texto (veja as notas abaixo):

rem Saved in D:\Temp\WriteText.bat
@echo off
echo This is a test> test.txt
echo 123>> test.txt
echo 245.67>> test.txt

Resultado:

D: \ Temp> WriteText

D: \ Temp> digite test.txt
Isto é um teste
123
245,67

D: \ Temp>

Notas:

  • @echo off desativa a impressão de cada comando no console
  • A menos que você atribua um nome de caminho específico, o redirecionamento com >ou >>será gravado no diretório atual (o diretório em que o código está sendo executado).
  • O echo This is a test > test.txtusa um >para substituir qualquer arquivo que já exista com novo conteúdo.
  • As echoinstruções restantes usam dois >>caracteres para anexar ao arquivo de texto (adicionar a), em vez de substituí-lo.
  • As type test.txtsimplesmente digita a saída do arquivo para a janela de comando.
Ken White
fonte
14
Os últimos três @sinais são redundantes desde que você já o fez @echo off. Eles são necessários apenas se o eco não tiver sido desligado. stackoverflow.com/a/21077142/632951
Pacerier
119

É mais fácil usar apenas um bloco de código, então você só precisa de um redirecionamento.

(
  echo Line1
  echo Line2
  ...
  echo Last Line
) > filename.txt
jeb
fonte
7
OMG tão simples e torna-se a meio caminho humano que é impressionante desde scripting é como a introdução ao mundo da jibberish de programação
Gregg
Isso não funcionou para mim, mas uma variação com o redirecionamento na frente do bloco `> filename.txt (` funcionou.
willw
2
@willw suponho, há um lugar de fechamento parêntese adicional em seu código block.Else ele deve trabalhar, independentemente se você colocar o redirecionamento na frente ou após o bloco
jeb
@ jeb Possivelmente - eu não tenho mais meu arquivo de teste original, então não posso ter certeza. Certamente, posteriormente, tive que escapar dos caracteres de fechamento como ^), o que tenderia a apoiar sua hipótese. Ainda assim, pelo menos nossa discussão alerta outras pessoas para uma possível armadilha.
willw
23

echo "blahblah"> txt.txt irá apagar o txt e colocar blahblah no lugar

echo "blahblah">> txt.txt vai escrever blahblah em uma nova linha no txt

Eu acho que ambos criarão um novo txt se não existir (eu sei que o primeiro faz)

Onde " txt.txt" está escrito acima, um caminho de arquivo pode ser inserido, se desejado. por exemplo C:\Users\<username>\desktop, que o colocará na área de trabalho.

Darth Tater
fonte
2
sim, é verdade para ambos. Infelizmente a resposta não acrescenta informação adicional para as respostas existentes (mencionando. '%~dp0Would ...)
Stephan
gravar em um txt na mesma pasta?
Darth Tater
Para escrever para a pasta, onde reside batchfile (independentes de qualquer cdou pushdcomandos)
Stephan
14
    @echo off

    (echo this is in the first line) > xy.txt
    (echo this is in the second line) >> xy.txt

    exit

Os dois >>significam que a segunda linha será anexada ao arquivo (ou seja, a segunda linha será iniciada após a última linha do xy.txt).

é assim que xy.txtparece:

this is in the first line
this is in the second line
Órgão
fonte
5

@echo off Escrita de título usando arquivos em lote cor 0a

Exemplo de texto de eco> Filename.txt Texto adicional de eco >> Filename.txt

@ECHO OFF
Title Writing Using Batch Files
color 0a

echo Example Text > Filename.txt
echo Additional Text >> Filename.txt
Ás
fonte
4
  • Você pode usar copy con para escrever um texto longo
  • Exemplo:

    C: \ COPY CON [unidade:] [caminho] [Nome do arquivo]

    .... Conteúdo

    F6

    1 arquivo (s) é copiado

Pham Thanh
fonte
Em um arquivo em lotes, a cópia con solicita ao usuário.
Heringer
3
@echo off

echo Type your text here.

:top

set /p boompanes=

pause

echo %boompanes%> practice.txt

espero que isto ajude. você deve alterar os nomes das strings (IDK como é chamado) e o nome do arquivo

John Caleb Garon
fonte