Come posso usare un file batch per scrivere su un file di testo?


192

Devo creare uno script in grado di scrivere una riga di testo in un file di testo nella stessa directory del file batch.

Risposte:


309

È possibile utilizzare echoe reindirizzare l'output su un file di testo (vedere le note seguenti):

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

Produzione:

D: \ Temp> WriteText

D: \ Temp> digitare test.txt
Questo è un test
123
245,67

D: \ Temp>

Appunti:

  • @echo off disattiva la stampa di ciascun comando sulla console
  • A meno che non gli venga assegnato un nome percorso specifico, il reindirizzamento con >o >>scriverà nella directory corrente (la directory in cui viene eseguito il codice).
  • Lo echo This is a test > test.txtutilizza >per sovrascrivere qualsiasi file già esistente con nuovo contenuto.
  • Le restanti echoistruzioni usano due >>caratteri da aggiungere al file di testo (aggiungi a) invece di sovrascriverlo.
  • Digita type test.txtsemplicemente l'output del file nella finestra di comando.

14
Gli ultimi tre @segni sono ridondanti da quando lo hai già fatto @echo off. Sono necessari solo se l'eco non è stata disattivata. stackoverflow.com/a/21077142/632951
Pacerier

119

È più facile usare solo un blocco di codice, quindi è necessario solo un reindirizzamento.

(
  echo Line1
  echo Line2
  ...
  echo Last Line
) > filename.txt

7
OMG è così semplice e lo rende a metà strada umano, il che è impressionante dal momento che lo scripting è come l'introduzione al mondo inebetito della programmazione
Gregg

Questo non ha funzionato per me, ma una variazione con il reindirizzamento davanti al blocco `> nomefile.txt (` ha funzionato.
Willw

2
@willw suppongo che ci sia un'ulteriore parentesi di chiusura da qualche parte nel tuo blocco di codice. Inoltre deve funzionare, indipendentemente dal fatto che tu abbia messo il reindirizzamento in primo piano o dopo il blocco
jeb

Forse @jeb - Non ho più il mio file di test originale, quindi non posso esserne sicuro. Sicuramente in seguito ho dovuto sfuggire alla chiusura dei caratteri) come ^), che tenderebbe a sostenere la tua ipotesi. Tuttavia, almeno la nostra discussione avvisa gli altri di una possibile trappola.
sarà il

23

echo "blahblah"> txt.txt cancellerà il txt e metterà blahblah al suo posto

echo "blahblah">> txt.txt scriverà blahblah su una nuova riga nel txt

Penso che entrambi creeranno un nuovo txt se non esiste (so che il primo lo fa)

Dove " txt.txt" è scritto sopra, è possibile inserire un percorso file se lo si desidera. ad esempio C:\Users\<username>\desktop, che lo metterà sul loro desktop.


2
si, è vero per entrambi. Purtroppo la tua risposta non aggiunge ulteriori informazioni alle risposte esistenti (menzionando '%~dp0sarebbe ...)
Stephan

scrivere su un txt nella stessa cartella?
Darth Tater,

Per scrivere nella cartella, in cui risiede batchfile (indipendente da qualsiasi cdo pushdcomandi)
Stephan

14
    @echo off

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

    exit

I due >>significano che la seconda riga verrà aggiunta al file (ovvero la seconda riga inizierà dopo l'ultima riga di xy.txt).

ecco come xy.txtappare:

this is in the first line
this is in the second line

5

@echo off Scrittura titolo usando file batch colore 0a

echo Esempio di testo> Nome file.txt echo Testo aggiuntivo >> Nome file.txt

@ECHO OFF
Title Writing Using Batch Files
color 0a

echo Example Text > Filename.txt
echo Additional Text >> Filename.txt

4
  • Puoi usare copy con per scrivere un lungo testo
  • Esempio:

    C: \ COPY CON [unità:] [percorso] [Nome file]

    .... Contenuto

    F6

    1 file è stato copiato


In un file batch, copia con richiede all'utente.
Heringer,

3
@echo off

echo Type your text here.

:top

set /p boompanes=

pause

echo %boompanes%> practice.txt

spero che questo ti aiuti. dovresti cambiare i nomi delle stringhe (IDK come si chiama) e il nome del file

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.