¿Cómo crear un archivo de texto vacío a partir de un archivo por lotes?


244

¿Alguien puede recordar cuál fue el comando para crear un archivo vacío en MSDOS usando el archivo BAT?


3
También en stackoverflow.com/questions/1702762 , "¿Cómo crear un archivo vacío en la línea de comando?".
Peter Mortensen el

66
No estás confundiendo DOS y cmd.exe, ¿verdad?
usuario desconocido

Set-Content "your_file.txt" .gitignore -Encoding utf8LÉAME : ¡ esto distingue entre mayúsculas y minúsculas y fuerza la codificación utf8! (También publiqué esto como respuesta).
Wolfpack'08

Respuestas:


235
echo. 2>EmptyFile.txt

49
Sin embargo, esto hace eco de una nueva línea a stdout ... mi respuesta no.
efímero

77
A veces es relevante; Solía ​​tener contacto por ahí hasta que tuve la idea de copiar NUL (o escribir NUL> archivo) con el fin de obtener archivos de 0 bytes. :-)
Joey

18
Para combinar la respuesta de ephemient y esta, podría hacer: "echo.> NUL 2> EmptyFile.txt" para lograr los mismos resultados sin generar una nueva línea
cmptrgeekken

77
Por qué está .enecho.
Ninh Pham

3
@Reegan Si lo usara echo 2sin ., la consola diría "ECHO está apagado". El uso echo. 2efectivamente silencia la salida de la consola al mostrar solo una nueva línea.
OneManBand

362
copiar NUL EmptyFile.txt

DOS tiene algunos archivos especiales (dispositivos, en realidad) que existen en cada directorio, NULsiendo el equivalente de UNIX /dev/null: es un archivo mágico que siempre está vacío y tira todo lo que le escribes. Aquí hay una lista de algunos otros; CONocasionalmente es útil también.

Para evitar tener ningún resultado, puede usar

copy / y NUL EmptyFile.txt> NUL

/yevita copyque haga una pregunta que no puede ver cuando se envía la salida NUL.


36
+1: la pregunta indica un archivo vacío , por lo que la respuesta aceptada es incorrecta.
Joe

99
La solución de DannySmurf en realidad crea un archivo vacío: una nueva línea va a stdout, nada va a stderr (dirigido al nuevo archivo). Pero gracias por el +1 de todos modos
efímero

2
escriba nul> EmptyFile.txt es la solución más corta. Aún así, su respuesta es mejor que la solución aceptada, porque su archivo estará realmente vacío. +1
TPAKTOPA

3
Advertencia: sí, la pregunta era cómo crear un archivo vacío, sin embargo, por lo general, desea "asegurarse de que el archivo existe". Al usar el copy /Y NULcomando, puede borrar el contenido existente. Si está acostumbrado al touchcomando de Unix , esto podría no ser lo que espera.) El uso type NUL >> emptyfile.txtes más seguro a este respecto.
Eckes

No pude encontrar ninguna información CON, aparte de la vinculada en esta respuesta. ¿Podría alguien compartir alguna lectura ligera?
Sinjai

182
type NUL > EmptyFile.txt

Después de leer las dos publicaciones anteriores, esta mezcla de las dos es lo que se me ocurrió. Parece un poco más limpio. No hay necesidad de preocuparse por redirigir los "1 archivos copiados". mensaje para NUL, como lo hace la publicación anterior, y se ve bien al lado del ECHO OutputLineFromLoop >> Emptyfile.txtque generalmente seguirá en un archivo por lotes.


13
1 esta es la natural que primero viene a la mente, no los artificios con stderr etc.
Amit Naidu

2
Estás en lo correcto. Este método evita el indicador / y en el comando copiar.
djangofan

Corto y fácil. ¡Algunas otras soluciones aquí no crean un nuevo archivo de cero bytes!
Christian St.

66

Técnicas que obtuve de otras respuestas:

Hace que un archivo de 0 bytes sea muy claro y compatible con versiones anteriores:

type nul >EmptyFile.txt

idea vía: anónimo , Danny Backett , posiblemente otros, inspirado por el trabajo de JdeBP

Un archivo de 0 bytes de otra manera , es compatible con versiones anteriores:

REM. >EmptyFile.txt

idea vía: Johannes

Un archivo de 0 bytes de tercera vía también compatible con versiones anteriores:

echo. 2>EmptyFile.txt

idea a través de: TheSmurf

Un archivo de 0 bytes de la forma sistemática probablemente disponible desde Windows 2000:

fsutil file createnew EmptyFile.txt 0

idea a través de: Emm

Un archivo de 0 bytes que sobrescribe archivos de solo lectura

ATTRIB -R filename.ext>NUL
(CD.>filename.ext)2>NUL

idea a través de: copyitright

Una nueva línea nueva (2 bytes: 0x0D 0x0Aen notación hexadecimal , alternativamente escrita como \r\n):

echo.>AlmostEmptyFile.txt

Nota: no hay espacio entre echo, .y >.

idea vía: ¿Cómo puedes repetir una nueva línea en archivos por lotes?


editar Parece que cualquier comando no válido redirigido a un archivo crearía un archivo vacío. je, una característica! compatibilidad: desconocido

TheInvisibleFeature <nul >EmptyFile.txt

Un archivo de 0 bytes: comando no válido / con un nombre aleatorio (compatibilidad: desconocido):

%RANDOM%-%TIME:~6,5% <nul >EmptyFile.txt

vía: gran fuente de azar por Hung Huynh

editar 2 Andriy M señala la forma probablemente más divertida / provocadora de lograr esto a través de un comando no válido

Un archivo de 0 bytes: comando no válido / the funky way (compatibilidad: desconocida)

*>EmptyFile.txt

idea a través de: Andriy M

Un archivo de 0 bytes que viene por cuarta vez :

break > file.txt

idea vía: foxidrive gracias al comentario de Double Gras !


Es type nul ..., no type <nul ..., en realidad.
Andriy M

@AndriyM gracias, tienes razón, hice la edición. No me di cuenta porque, curiosamente, funciona con el incorrecto. ¡lo que puede significar que cualquier comando no válido redirigido a un nombre de archivo crearía un archivo vacío! acabo de probar NonExistentCommand <nul >EmptyFile.txty funcionó
n611x007

dado que sería inseguro confiar en un nombre de comando codificado que espera que sea "inválido", agregué una opción de nombre de comando aleatorio
n611x007


3
Y la mayoría de los comandos se pueden usar >>si necesita "debe existir pero no debe truncarse si existe" (como touchhace Unix )
eckes

25

MOVIMIENTO RÁPIDO DEL OJO. > empty.file


Estoy atascado en Windows CE, y esta es la única respuesta que crea un archivo vacío. Los otros enfoques o bien agregar una línea en blanco o simplemente no funcionan ...
AntonyG

El único problema con esta solución es que si hay un archivo llamado REM en el directorio actual y escribe REM., cmd responderá con "'rem' '. no se reconoce como un comando interno o externo, programa operativo o archivo por lotes ".
DodgyCodeException

@DodgyCodeException, usar en rem/lugar de rem.resolver ese problema ...
aschipfl

@aschipfl gracias, eso es interesante. También es interesante cómo esta respuesta de 2010 tiene comentarios separados entre sí por varios años. ¡Una conversación lenta!
DodgyCodeException

8

Si existe la posibilidad de que el archivo a escribir ya exista y sea de solo lectura, use el siguiente código:

ATTRIB -R filename.ext
CD .>filename.ext

Si no existe ningún archivo, simplemente haga:

CD .>filename.ext

(código actualizado / modificado de acuerdo con el comentario de DodgyCodeException)

Para suprimir cualquier error que pueda surgir:

ATTRIB -R filename.ext>NUL
(CD .>filename.ext)2>NUL

1
El único problema con esta solución es que si hay un archivo llamado CD(sin extensión) en el directorio actual y escribe CD., cmd responderá con "'CD'. no se reconoce como un comando interno o externo, programa operativo o archivo por lotes ". Si en su lugar escribe CD .(con un espacio antes del punto) funcionará.
DodgyCodeException


7

Uno más para agregar a los libros: corto y dulce para escribir.

break>file.txt
break>"file with spaces in name.txt"

Supongo que nos saltaríamos las citas
Nam G VU

@NamGVU Las comillas se usan en el nombre de archivo de destino, si elige usar elementos largos de nombre de archivo, como espacio, etc. No forman parte del contenido del archivo.
foxidrive

Sí, estoy de acuerdo ^^ Permiso para actualizar el tuyo como se discutió.
Nam G VU

@NamGVU Las comillas pueden dejarse en su lugar con o sin un nombre de archivo largo. Supongo que si se escribe desde la línea de comando con un nombre de archivo corto, entonces no querrá escribir innecesariamente.
foxidrive

Sugiero eliminar la segunda línea de esta respuesta. OMI, esta es la mejor respuesta a la pregunta hasta ahora, pero la segunda línea no agrega realmente valor a menos que la persona que intenta usarla no conozca los conceptos básicos del manejo de espacios en blanco para la línea de comandos.
kayleeFrye_onDeck

2

Puede usar un TYPEcomando en lugar de COPY. Prueba esto:

TYPE File1.txt>File2.txt

Donde File1.txtesta vacio


3
También puedes hacerlotype NUL>File2.txt
Danny Beckett

66
Por cierto, ¿cómo obtener File1.txt?
TomeeNS

1

También puede usar SETpara crear un bytearchivo nulo de la siguiente manera

set x=x > EmptyFile.txt

O si no desea crear una variable adicional, reasigne una variable existente como

set PROMPT=%PROMPT% > EmptyFile.txt

o así:

set "PROMPT=%PROMPT%" > EmptyFile.txt

0

Hay infinitos enfoques.

Comandos que no generan nada:

break
cls
color
goto
pushd
popd
prompt
title

Comandos raros:

CD.
REM.
@echo off
cmd /c
START >FILE

El printcomando desactualizado produce un archivo en blanco:

print /d:EMPTY_TEXT_FILE nul

-2

La forma más fácil es:

echo. > Filename.txt


8
Esto creará un archivo con un carácter de espacio seguido de un carácter de retorno de carro seguido de un nuevo carácter de línea, no un archivo vacío.
Andriy M

Vale la pena mirar mi respuesta (a continuación) porque cambia la codificación.
Wolfpack'08

-3

IMPORTANTE:

Si no configura la codificación, muchos softwares pueden romperse. git es un ejemplo muy popular.

Set-Content "your_ignore_file.txt" .gitignore -Encoding utf8 esto distingue entre mayúsculas y minúsculas y fuerza la codificación utf8.


3
¿Cómo es relevante la codificación para crear un archivo vacío ? Un archivo de byte nulo no necesita codificación y es difícil marcarlo con una lista de materiales (0 bytes)
jeb

@jeb porque las personas llenan archivos vacíos y cuando los archivos rellenos se usan como archivos de configuración, crean errores cuando no son UTF8. De hecho, diría que la gente casi siempre llena los archivos y no los deja en blanco, y no usaría ningún otro método para crear un archivo en blanco que luego pretendía alterar porque casi siempre quiero estar seguro de que mis archivos son UTF8. Por ejemplo, el tutorial .git en github le pide al usuario que cree un archivo en blanco que luego se rellena, y el otro método crea un archivo con codificación extraña de Windows.
Wolfpack'08
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.