¿Cómo puedo usar un archivo por lotes para escribir en un archivo de texto?


192

Necesito hacer un script que pueda escribir una línea de texto en un archivo de texto en el mismo directorio que el archivo por lotes.

Respuestas:


309

Puede usar echoy redirigir la salida a un archivo de texto (vea las notas a continuación):

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

Salida:

D: \ Temp> WriteText

D: \ Temp> escriba test.txt
Esto es una prueba
123
245,67

D: \ Temp>

Notas:

  • @echo off apaga la impresión de cada comando en la consola
  • A menos que le asigne un nombre de ruta específico, la redirección con >o >>escribirá en el directorio actual (el directorio en el que se ejecuta el código).
  • Los echo This is a test > test.txtusos uno >para sobrescribir cualquier archivo que ya existe con el nuevo contenido.
  • Las echodeclaraciones restantes usan dos >>caracteres para agregar al archivo de texto (agregar a), en lugar de sobrescribirlo.
  • Las type test.txtsimplemente escribe la salida de archivo en la ventana de comandos.

14
Los últimos tres @signos son redundantes ya que ya lo había hecho @echo off. Solo son necesarios si el eco no se ha desactivado. stackoverflow.com/a/21077142/632951
Pacerier el

119

Es más fácil usar solo un bloque de código, luego solo necesita una redirección.

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

77
OMG es tan simple y lo hace a mitad de camino humano, lo cual es impresionante ya que las secuencias de comandos son como la introducción al mundo improvisado de la programación
gregg

Esto no funcionó para mí, pero una variación con la redirección frente al bloque `> filename.txt (` funcionó.
willw

2
@willw Supongo que hay un paréntesis de cierre adicional en algún lugar de su bloque de código. De lo contrario, debe funcionar, independientemente de si coloca la redirección al frente o después del bloque
jeb

@jeb Posiblemente: ya no tengo mi archivo de prueba original, así que no puedo estar seguro. Ciertamente, posteriormente tuve que escapar de los caracteres de cierre como ^), lo que tendería a respaldar su hipótesis. Aún así, al menos nuestra discusión alerta a otros sobre una posible trampa.
willw

23

echo "blahblah"> txt.txt borrará el txt y pondrá blahblah en su lugar

echo "blahblah">> txt.txt escribirá blahblah en una nueva línea en el txt

Creo que ambos crearán un nuevo txt si no existe ninguno (sé que el primero sí)

Donde " txt.txt" se escribe arriba, se puede insertar una ruta de archivo si se desea. por ejemplo C:\Users\<username>\desktop, que lo pondrá en su escritorio.


2
Sí, es cierto para ambos. Lamentablemente la respuesta no añadir información adicional a las respuestas existentes (mención. '%~dp0Haría ...)
Stephan

escribir en un txt en la misma carpeta?
Darth Tater

para escribir en la carpeta, donde reside el archivo por lotes (independiente de cualquiera cdo pushdcomandos)
Stephan

14
    @echo off

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

    exit

Los dos >>significan que la segunda línea se agregará al archivo (es decir, la segunda línea comenzará después de la última línea de xy.txt).

así es como se xy.txtve:

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

5

@echo off Escritura de títulos usando Batch Files color 0a

echo Ejemplo de texto> Filename.txt echo Texto adicional >> Filename.txt

@ECHO OFF
Title Writing Using Batch Files
color 0a

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

4
  • Puedes usar copy con para escribir un texto largo
  • Ejemplo:

    C: \ COPY CON [unidad:] [ruta] [nombre del archivo]

    .... Contenido

    F6

    1 archivo (s) es copiado


En un archivo por lotes, copy con solicita al usuario.
heringer

3
@echo off

echo Type your text here.

:top

set /p boompanes=

pause

echo %boompanes%> practice.txt

espero que esto ayude. debe cambiar los nombres de cadena (IDK como se llama) y el nombre del archivo

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.