¿Cómo puedo crear un archivo vacío en la línea de comando en Windows?
¿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.
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 echo
sin '.' 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 unanul
respuesta alset/p
comando, lo que hará que la variable utilizada permanezca sin cambios. Como es habitual conset/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
dir
comando debe indicar el tamaño del archivo como 11 bytes: "helloworld!
".
Prueba esto:
type NUL > 1.txt
Esto definitivamente creará un archivo vacío.
Aquí hay otra manera:
cd . > filename
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á.