¿Cómo puedo crear un archivo vacío en la línea de comando en Windows?

Resuelto Grendler asked hace 15 años • 35 respuestas

¿Cómo puedo crear un archivo vacío en la línea de comandos de DOS/Windows?

Lo intenté:

copy nul > file.txt

Pero siempre muestra que se copió un archivo.

¿Existe otro método en el cmd estándar?

Debería ser un método que no requiera el comando táctil de Cygwin ni ningún otro comando no estándar. El comando debe ejecutarse desde un script, por lo que no se pueden utilizar pulsaciones de teclas.

Grendler avatar Nov 10 '09 01:11 Grendler
Aceptado

Sin redirección, Luc Vu o Erik Konstantopoulos señalan :

copy NUL EMptyFile.txt
copy /b NUL EmptyFile.txt

"¿ Cómo crear un archivo de texto vacío a partir de un archivo por lotes? " (2008) también señala:

type NUL > EmptyFile.txt
# also
echo. 2>EmptyFile.txt
copy nul file.txt > nul # also in qid's answer below
REM. > empty.file
fsutil file createnew file.cmd 0 # to create a file on a mapped drive

Nomad menciona uno original :

C:\Users\VonC\prog\tests>aaaa > empty_file
'aaaa' is not recognized as an internal or external command, operable program or batch file.

C:\Users\VonC\prog\tests>dir

 Folder C:\Users\VonC\prog\tests

27/11/2013  10:40    <REP>          .
27/11/2013  10:40    <REP>          ..
27/11/2013  10:40                 0 empty_file

En el mismo espíritu, Samuel sugiere en los comentarios :

el más corto que uso es básicamente el de Nomad:

.>out.txt

Da un error:

'.' is not recognized as an internal or external command

Pero este error está en stderr. Y >solo redirige la salida estándar, donde no se ha producido nada
. De ahí la creación de un archivo vacío .
El mensaje de error se puede ignorar aquí. O, como en la respuesta de Rain , redirigido a :NUL

.>out.txt 2>NUL

(Respuesta original, noviembre de 2009)

echo.>filename

echo ""En realidad pondría "" en el archivo! Y echosin '.' pondría " Command ECHO activated" en el archivo...)

Nota: el archivo resultante no está vacío pero incluye una secuencia de líneas de retorno: 2 bytes.


Esta discusión apunta a una verdadera solución por lotes para un archivo vacío real:

 <nul (set/p z=) >filename

 dir filename
 11/09/2009  19:45                 0 filename
 1 file(s)                         0 bytes

" <nul" envía una nulrespuesta al set/pcomando, lo que hará que la variable utilizada permanezca sin cambios. Como es habitual con set/p, la cadena a la derecha del signo igual se muestra como un mensaje sin CRLF.

Dado que aquí la "cadena a la derecha del signo igual" está vacía... el resultado es un archivo vacío.


La diferencia con cd. > filename(que se menciona en la respuesta de Patrick Cuff y también produce un archivo de 0 bytes de longitud) es que este "bit de redirección" (el <nul...truco) se puede usar para hacer eco de líneas sin ningún CR :

<nul (set/p z=hello) >out.txt
<nul (set/p z= world!) >>out.txt
dir out.txt

El dircomando debe indicar el tamaño del archivo como 11 bytes: " helloworld!".

VonC avatar Nov 09 '2009 18:11 VonC

Prueba esto:

type NUL > 1.txt

Esto definitivamente creará un archivo vacío.

Justin avatar Jan 06 '2013 06:01 Justin

Aquí hay otra manera:

cd . > filename
Patrick Cuff avatar Nov 09 '2009 19:11 Patrick Cuff

Si realmente quieres un archivo totalmente vacío, sin salida estándar, puedes hacer un poco de trampa:

copy nul file.txt > nul

Simplemente redirija stdout a nulo y el resultado de la copia desaparecerá.

qid avatar Nov 09 '2009 18:11 qid