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


494

¿Cómo 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.

¿Hay algún otro método en el cmd estándar?

Debe ser un método que no requiera el comando táctil de Cygwin o cualquier otro comando no estándar. El comando debe ejecutarse desde un script para que no se puedan usar las pulsaciones de teclas.


Acabo de encontrar un verdadero comando por lotes que resulta en un archivo vacío (0 bytes): he actualizado mi respuesta.
VonC el

3
Duplicado: stackoverflow.com/questions/210201 , "¿Cómo crear un archivo de texto vacío a partir de un archivo por lotes?". (Pero, en mi humilde opinión, las respuestas son mejores aquí.)
Peter Mortensen

Sí, el comando copy nul> file.txt se crea con el texto "1 archivo (s) copiado". El archivo vacío no se crea.
Ripon Al Wasim

55
Esto para mí solo prueba que MS-DOS es basura si no puede crear un archivo vacío simple con un comando.
Kolob Canyon

2
@KolobCanyon: puedes, por supuesto, según las respuestas ya publicadas. ¿Pero realmente cree que la capacidad de crear rápidamente un archivo vacío debería ser una prioridad para un sistema operativo dirigido a usuarios finales y que necesita ejecutarse en 16K de RAM? Después de todo, no es algo particularmente útil, excepto en algunos casos excepcionales.
Harry Johnston

Respuestas:


571

Sin redirección, Luc Vu o Erik Konstantopoulos apuntan a cabo a:

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 apunta a:

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 una 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

Sí da un error:

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

Pero este error está en stderr. Y >solo redirige stdout, donde no se ha producido nada .
De ahí la creación de un archivo vacío . El mensaje de error puede ignorarse aquí.


(Respuesta original, noviembre de 2009)

echo.>filename

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

Nota: el archivo resultante no está vacío, pero incluye una secuencia de línea 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

El " <nul" canaliza 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.

Como 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 redireccionamiento" (el <nul...truco) se puede utilizar para repetir 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!".


2
realmente querría echo.>filenameporque incluirá tanto el espacio como el carácter de nueva línea.
Agent_9191

1
El uso del remcomando evita crear un archivo con una línea vacía.
Greg Hewgill el

@ Agent_9191: cierto, he actualizado mi respuesta. @Greg: no estoy seguro de lo que quieres decir: rem>filenameproduce el mismo resultado (2 bytes)
VonC

3
Noufal Ibrahim: no dejes que esto te engañe; solo vea la siguiente respuesta que tiene una solución mucho más fácil e igualmente funcional. Lo que se hace aquí es parcialmente incorrecto en el primer caso (no está vacío pero contiene un salto de línea) y es demasiado complicado en el segundo.
Joey

1
@barlop Sí: ese es el punto: activa algún mensaje de error en stderr, pero nada (cadena vacía) en stdout. Y >redirigir stdout solo a out.txt. De ahí la creación de un archivo vacío. Puede ignorar el mensaje de error en este contexto.
VonC

270

Prueba esto:

type NUL > 1.txt

Esto definitivamente creará un archivo vacío.


Esto agrega "NUL is ./NUL" al archivo
dshgna

106

Aquí hay otra forma:

cd. > filename

11
cd. > filename¡No es trabajo para mí en lugar de cd > filename trabajos!
NaveenDA

3
"cd.> filename" crea un archivo vacío; de lo contrario, tendrá la ruta de archivo impresa en el archivo recién creado con el comando "cd> filename".
niketan

66
Use esto: lo que cd . > filename.extensionsignifica que necesita un espacio entre cdy.
AIon

77

Si realmente quieres un archivo totalmente vacío, sin ningún resultado para stdout, puedes hacer un poco de trampa:

copy nul file.txt > nul

Simplemente redirija stdout a nul, y la salida de la copia desaparecerá.


1
Falla si existe el archivo.txt.
Grendler

66
Fallar si el archivo existe es un buen comportamiento ya que entiendo la pregunta.
wallyk

32
+1. Es sorprendente cómo la respuesta aceptada es algo medio equivocado y medio intrincado, mientras que la respuesta obviamente correcta casi no recibe crédito. Para agregar a esto: type nul>filesería otra forma.
Joey

@Joey el aceptado tiene un montón de soluciones que funcionan para crear un archivo de 0 bytes vacío.
barlop

2
@barlop: Como referencia, esta fue la respuesta aceptada en el momento en que se escribió el comentario. No recibo una notificación cada vez que cambia una respuesta, hago referencia en un comentario.
Joey

48

Abrir documento :

type file.txt

Archivo nuevo :

Way 1 : type nul > file.txt
Way 2 : echo This is a sample text file > sample.txt
Way 3 : notepad myfile.txt <press enter>

Contenido editado:

notepad file.txt

Copiar

copy file1.txt file1Copy.txt

Rebautizar

rename file1.txt file1_rename.txt

Borrar archivo :

del file.txt

Buena descripción de los comandos cmd
KargWare

32

Al leer los comentarios en mi publicación, debo admitir que no leí bien la pregunta.

En la línea de comandos de Windows, una forma sería usar fsutil :

fsutil file createnew <filename> <size>

Un ejemplo:

fsutil file createnew myEmptyFile.txt 0

A continuación se muestra la línea de comandos * nix.

touch filename

Este comando cambia la fecha de modificación de un archivo o lo crea si no se encuentra el archivo.


Desafortunadamente, la pregunta específicamente dice: "Sin el comando táctil de Cygwin".
qid

3
Existen implementaciones que no son Cygwin del comando táctil: unxutils.sourceforge.net es bueno.
Greg Hewgill el

En * nix, personalmente soy parcial a un simple > filename, que también se puede utilizar para truncar un archivo existente.
Frank Farmer el

fsutilNecesita privilegios administrativos. Eso es mucho pedir simplemente creando un archivo vacío ...
Joey

@Joey ¿No son todos estos comandos demasiado para crear un archivo vacío? Incluso el siguiente con 120 puntos es mucho cuando estás acostumbrado a tocar.
Johnny

29
echo "" > filename

Creo que esto funciona en Windows / DOS, pero mi última experiencia práctica con ambos es hace bastante tiempo. Sé a ciencia cierta que funciona básicamente en cualquier sistema operativo compatible con POSIX .


2
Aparentemente, la respuesta de VonC es mejor que la mía, así que vota en su lugar.
Kris el

3
Desafortunadamente: echo "" muestra comillas dobles y se escriben en el archivo cuando la secuencia se redirige a él. Lo mismo sucede con just: echo> filename porque escribe que ECHO también está desactivado / activado en el archivo.
Grendler el

tal vez podrías poner "@echo off" en la línea antes de crear el archivo para evitar eso.
Kris el

27
call>file.txt

Esta es la forma más limpia que conozco.


¿Qué tiene esto de "limpio"?
GreenAsJade

44
no genera nada en el archivo y es fácil de recordar y usar.
nephi12

Esta fue la solución más simple que funciona y más fácil de recordar.
nhershy

12
cd > filename.cfg 

funcionó al crear un archivo en C: / Archivos de programa donde no tiene acceso para crear archivos directamente.


11

Puedes escribir tu propio toque.

//touch.cpp
#include <fstream>
#include <iostream>

int main(int argc, char ** argv;)
{
  if(argc !=2)
  {
    std::cerr << "Must supply a filename as argument" << endl;
    return 1;
  }
  std::ofstream foo(argv[1]);
  foo.close();
  return 0;
}

6

copy con SomeFile.txt Enter

Ctrl-Z Enter


Precisé la pregunta de que el comando se ejecutará desde el script, por lo que desafortunadamente cualquier interacción con el teclado no funciona. Gracias de todos modos.
Grendler el

6

Otro método más que crea un archivo de cero bytes:

break > "file.txt"

6

para que pueda crear un archivo vacío con

'' > newfile.txt

navegue al directorio y escriba el comando anterior en la ventana de PowerShell.

Tenga en cuenta que esto no funcionará en el símbolo del sistema de Windows.


5

Pruebe esto: abc > myFile.txt Primero, creará un archivo con el nombre myFile.txten el directorio de trabajo actual (en el símbolo del sistema). Luego ejecutará el comando abcque no es un comando válido. De esta manera, ha obtenido un nuevo archivo vacío con el nombre myFile.txt.


2
Esto podría estar muy mal si abcestuviera en la ruta y fuera una función conveniente para formatear todas las unidades, excepto el directorio de instalación.
Sangrado dedos

5

type nul>filename creará un nuevo archivo vacío.

Lo siento, llego tarde.

ACTUALIZACIÓN : también copy nul filenamefunciona sin redirigir (solución más obvia).


5

Usar copy > your_file_name.extensionen el símbolo del sistema como

P:\excecise> copy > Sample.txt

4

También puedes usar:

echo. 2>foo

La salida de depuración para echo.casi definitivamente estará vacía.


4

Leo muchos hilos pero no es el camino más corto.

Por favor use el comando:

>copy /b NUL empty_file.txt


4

Puedes usar el comando anterior

copy con file_name.ext

no escriba nada, solo presione F6 para guardarlo, sin embargo, imprimirá "Archivo copiado", pero cuando abra el archivo, estará vacío


4

Para crear cualquier tipo de archivo puede usar el siguiente código

escriba nul> (nombre_archivo). (tipo_archivo)

P.ej. Si desea crear un archivo de texto, entonces

escriba nul> demo.txt

Si quieres crear un archivo javascript entonces

escriba nul> demo.js


3

Esto funcionó para mí

echo > file.extension

Aquí hay otra forma que encontré hoy, obtuve ideas de otras respuestas pero funcionó

sometext > filename.extension

P.ej.

xyz > emptyfile.txt  //this would create an empty zero byte text file
abc > filename.mp4   //this would create an zero byte MP4 video media file

Esto mostraría un mensaje de error en el símbolo del sistema que,

xyz no es como un comando interno o externo, programa operativo o archivo por lotes.

Pero lo extraño que encontré fue que el archivo se está creando en el directorio incluso si el comando no es un comando estándar de Windows.


1
Hay más de un "controlador" en el que las aplicaciones de consola pueden leer / escribir. Los estándares son: (0) STDIN, (1) STDOUT y (2) STDERR. Creo que la razón por la que su truco funciona aquí es porque toda la salida va al controlador de errores, pero solo está dirigiendo STDOUT al archivo. Intente hacer: "xyz> emptyfile.txt 2> & 1" para redirigir STDERR a lo que sea que esté utilizando STDOUT, que resulta estar redirigiendo a "emptyfile.txt". Debería ver el mensaje de error dentro de ese archivo ahora.
Brent Rittenhouse


3

En Windows intenté hacer esto

echo off > fff1.txt

y creó un archivo llamado fff1.txt con un tamaño de archivo de 0kb

No encontré ningún comando aparte de esto que pudiera crear un archivo vacío.

Nota: debe estar en el directorio en el que desea crear el archivo.


no olvide hacer eco después de crear el archivo si lo necesita.
QMaster

Este comando congela el cmd después de hacer clic en ENTER.
Kavin Raju S

No estoy seguro de por qué lo hace, pero supongo que debería "hacer eco" después de ingresar el comando anterior.
Omkar Agrawal


2

Solo lo he intentado en windows

copy con file.txt

luego presione la Entertecla y luego presioneCtrl+Z Enter

Y ha funcionado para mí.

Para Ubuntu, generalmente estoy creando un archivo usando el comando VI

vi file.txt

Se abrirá el archivo, luego presione la ESCtecla y luego escriba : wp ​​y luego presione la entertecla. Creará un nuevo archivo con datos vacíos.


2
  • crear un archivo bat con contenido echo '' > %1 . (nombre el archivo como touch.bat)
  • agregue la carpeta a la variable PATH.
  • puedes usar el toque para crear archivos. (Ej: touch temp.txtcrea un archivo temp.txt)

Consulte este artículo para obtener más información.


1

Hoy he descubierto uno nuevo :)

Esto cambiará el título de la ventana de la línea de comando, pero también creará un archivo vacío.

title > file.txt

1

Ejecute CMD en modo admistrador y escriba esto:

NUL > file_name.extention

o escribes esto

echo .> file_name.extention

1

Aquí hay otra manera:

rem/ > file.ext

La barra oblicua /es obligatoria; sin ella, la parte de redirección fue comentada por rem.


0

Primero cree su archivo para que exista:

echo . > myfile.txt

Luego sobrescriba el archivo creado con una versión vacía con el copycomando:

copy /y nul myfile.txt
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.