Come creare un file vuoto dalla riga di comando in Windows?


494

Come creare un file vuoto nella riga di comando DOS / Windows?

Provai:

copy nul > file.txt

ma mostra sempre che un file è stato copiato.

Esiste un altro metodo nel cmd standard?

Dovrebbe essere un metodo che non richiede il comando touch da Cygwin o altri comandi non standard. Il comando deve essere eseguito da uno script in modo da non poter utilizzare i tasti.


Ho appena trovato un comando batch vero che risulta in un file vuoto (0 byte): ho aggiornato la mia risposta.
— VonC

3
Duplica: stackoverflow.com/questions/210201 , "Come creare un file di testo vuoto da un file batch?". (Ma, IMHO, le risposte sono migliori qui.)
— Peter Mortensen,

Sì, il comando copia nul> file.txt viene creato con il testo "1 file copiati". Il file vuoto non viene creato.
— Ripon Al Wasim,

5
Questo per me dimostra solo che MS-DOS è spazzatura se non è possibile creare un semplice file vuoto con un comando.
— Kolob Canyon

2
@KolobCanyon: puoi, ovviamente, per le risposte già pubblicate. Ma pensi davvero che la possibilità di creare rapidamente un file vuoto dovrebbe essere una priorità per un sistema operativo rivolto agli utenti finali e che deve essere eseguito con 16 KB di RAM? Non è una cosa particolarmente utile da fare, dopo tutto, tranne in alcuni rari casi limite.
— Harry Johnston,

Risposte:


571

Senza il reindirizzamento, Luc Vu o Erik Konstantopoulos indicano fuori a:

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

" Come creare un file di testo vuoto da un file batch? " (2008) indica anche:

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 ne menziona uno originale :

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

Nello stesso spirito, Samuel suggerisce nei commenti :

quello più corto che uso è fondamentalmente quello di Nomad:

.>out.txt

Dà un errore:

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

Ma questo errore è su stderr. E >reindirizza solo stdout, dove non è stato prodotto nulla .
Da qui la creazione di un file vuoto . Il messaggio di errore può essere ignorato qui.


(Risposta originale, novembre 2009)

echo.>filename

( echo ""metterebbe effettivamente "" nel file! E echosenza "." metterebbe " Command ECHO activated" nel file ...)

Nota: il file risultante non è vuoto ma include una sequenza di righe di ritorno: 2 byte.


Questa discussione indica una vera soluzione batch per un vero file vuoto :

 <nul (set/p z=) >filename

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

" <nul" Reindirizza una nulrisposta al set/pcomando, che farà in modo che la variabile utilizzata rimanga invariata. Come al solito set/p, la stringa a destra del segno di uguale viene visualizzata come prompt senza CRLF.

Dato che qui la "stringa a destra del segno di uguale" è vuota ... il risultato è un file vuoto.


La differenza con cd. > filename(che è menzionata nella risposta di Patrick Cuff e produce anche un file di lunghezza di 0 byte) è che questo "bit di reindirizzamento" (il <nul...trucco) può essere usato per echeggiare le linee senza alcun CR :

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

Il dircomando dovrebbe indicare la dimensione del file come 11 byte: " helloworld!".


2
in realtà vorresti echo.>filenameperché includerà lo spazio e il carattere di nuova riga.
— Agent_9191

1
L'uso del remcomando evita di creare un file con una riga vuota al suo interno.
— Greg Hewgill

@ Agent_9191: vero, ho aggiornato la mia risposta. @Greg: non sono sicuro di cosa intendi: rem>filenameproduce lo stesso risultato (2 byte)
— VonC

3
Noufal Ibrahim: non lasciarti ingannare da questo; basta vedere la prossima risposta che ha una soluzione molto più semplice e ugualmente efficace. Ciò che viene fatto qui è parzialmente sbagliato nel primo caso (non vuoto ma contiene un'interruzione di riga) e molto complicato nel secondo.
— Joey,

1
@barlop Sì: questo è il punto: innesca qualche messaggio di errore su stderr, ma nulla (stringa vuota) su stdout. E >reindirizzare stdout solo a out.txt. Da qui la creazione di un file vuoto. È possibile ignorare il messaggio di errore in questo contesto.
— VonC,

270

Prova questo:

type NUL > 1.txt

questo creerà sicuramente un file vuoto.


Questo aggiunge "NUL è ./NUL" al file
— dshgna,

106

Ecco un altro modo:

cd. > filename

11
cd. > filenamenon funziona per me invece che cd > filename funziona!
— NaveenDA,

3
"cd.> nomefile" crea un file vuoto altrimenti avrai il percorso del file stampato nel tuo file appena creato usando il comando "cd> nomefile".
— niketan,

6
Usa questo: cd . > filename.extensionsignifica che hai bisogno di uno spazio tra cde.
— AIon

77

Se vuoi davvero un file completamente vuoto, senza alcun output su stdout, puoi imbrogliare un po ':

copy nul file.txt > nul

Basta reindirizzare stdout a zero e l'output dalla copia scompare.


1
Non riesce se esiste il file.txt.
— Grendler,

6
Fallire se il file esiste è un buon comportamento poiché capisco la domanda.
— Wallyk,

32
+1. È sorprendente come la risposta accettata sia qualcosa di metà sbagliato e metà contorta mentre quella ovviamente corretta non ottiene quasi alcun credito. Per aggiungere a questo: type nul>filesarebbe un altro modo.
— Joey,

@Joey quello accettato ha un sacco di soluzioni che funzionano per creare un file vuoto da 0 byte.
— barlop

2
@barlop: come riferimento, questa era la risposta accettata al momento in cui il commento è stato scritto. Non ricevo una notifica ogni volta che cambia una risposta a cui faccio riferimento in un commento.
— Joey,

48

Apri il file :

type file.txt

Nuovo file :

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

Modifica contenuto:

notepad file.txt

copia

copy file1.txt file1Copy.txt

Rinominare

rename file1.txt file1_rename.txt

Cancella il file :

del file.txt

Bella panoramica dei comandi cmd
— KargWare il

32

Leggendo i commenti sul mio post, devo ammettere che non ho letto bene la domanda.

Sulla riga di comando di Windows, un modo sarebbe usare fsutil :

fsutil file createnew <filename> <size>

Un esempio:

fsutil file createnew myEmptyFile.txt 0

Di seguito è riportata la riga di comando * nix.

touch filename

Questo comando cambia la data modificata di un file o lo crea se il file non viene trovato.


Sfortunatamente, la domanda specifica nello specifico: "Senza il comando touch di Cygwin".
— qid

3
Esistono implementazioni non Cygwin del comando touch: unxutils.sourceforge.net è buono.
— Greg Hewgill

In * nix, sono personalmente parziale a un semplice > filename, che può anche essere usato per troncare un file esistente.
— Frank Farmer,

fsutilnecessita di privilegi amministrativi. È un po 'troppo da chiedere semplicemente creando un file vuoto ...
— Joey,

@Joey Non sono tutti questi comandi un po 'troppo per creare un file vuoto? Anche quello sotto con 120 punti è molto quando sei abituato a toccare.
— Johnny,

29
echo "" > filename

Credo che funzioni su Windows / DOS, ma la mia ultima esperienza pratica con entrambi è passata un po 'di tempo fa. So per certo che funziona praticamente su qualsiasi sistema operativo compatibile POSIX .


2
Apparentemente, la risposta di VonC è migliore della mia, quindi per favore votala invece.
— Kris,

3
Sfortunatamente: echo "" mostra le doppie virgolette e vengono scritte nel file quando lo stream viene reindirizzato su di esso. Lo stesso succede con solo: echo> nomefile perché scrive che ECHO è spento / acceso sul file.
— Grendler,

forse potresti mettere "@echo off" sulla linea prima di creare il file per aggirare quello?
— Kris

27
call>file.txt

questo è il modo più pulito che conosco.


Di cosa si tratta "pulito"?
— GreenAsJade,

4
non genera nulla nel file pur essendo facile da ricordare e da usare.
— nephi12,

Questa è stata la soluzione più semplice che funziona e più facile da ricordare.
— nhershy,

12
cd > filename.cfg 

ha funzionato durante la creazione di un file in C: / Programmi dove non si ha accesso per creare file direttamente.


11

Puoi scrivere il tuo tocco personale.

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

copia con SomeFile.txt Enter

Ctrl-Z Enter


Ho precisato la domanda che il comando verrà eseguito dallo script, quindi sfortunatamente qualsiasi interazione da tastiera non funziona. Grazie lo stesso.
— Grendler,

6

Ancora un altro metodo che crea un file a zero byte:

break > "file.txt"

6

così puoi creare un file vuoto con

'' > newfile.txt

passare alla directory e digitare il comando sopra nella finestra di PowerShell.

Nota che questo non funzionerà sul prompt dei comandi di Windows.


5

Prova questo: in abc > myFile.txt primo luogo, creerà un file con nome myFile.txtnella directory di lavoro attuale (nel prompt dei comandi). Quindi eseguirà il comando abcche non è un comando valido. In questo modo, hai ottenuto un nuovo file vuoto con il nome myFile.txt.


2
Questo potrebbe essere molto sbagliato se abcfosse nel percorso ed era una comoda funzione per la formattazione di tutte le unità tranne la directory di installazione.
— Bleeding Fingers il

5

type nul>filename creerà un nuovo file vuoto.

Scusa sono in ritardo.

AGGIORNAMENTO : copy nul filenamefunziona anche senza reindirizzamento (soluzione più ovvia).


5

Utilizzare copy > your_file_name.extensionnel prompt dei comandi come

P:\excecise> copy > Sample.txt

4

Puoi anche usare:

echo. 2>foo

L'output di debug per echo.sarà quasi sicuramente vuoto.


4

Ho letto molti thread ma non è il modo più breve.

Si prega di utilizzare il comando:

>copy /b NUL empty_file.txt


4

Puoi usare il vecchio comando

copy con file_name.ext

non digitare nulla, basta premere F6 per salvarlo, tuttavia verrà stampato "File copiato", ma quando si apre il file, sarà vuoto


4

Per creare qualsiasi tipo di file è possibile utilizzare il seguente codice

digitare nul> (nome_file). (tipo_file)

Per esempio. Se si desidera creare un file di testo, allora

digitare nul> demo.txt

Se vuoi creare un file javascript allora

digitare nul> demo.js


3

Questo ha funzionato per me,

echo > file.extension

Ecco un altro modo che ho trovato oggi, ho avuto idee da altre risposte ma ha funzionato

sometext > filename.extension

Per esempio.

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

Ciò mostrerebbe un messaggio di errore nel prompt dei comandi che,

xyz non è un comando interno o esterno, un programma eseguibile o un file batch.

Ma la cosa strana che ho trovato è che il file è stato creato nella directory anche se il comando non è un comando standard di Windows.


1
Esistono più "handle" che le applicazioni della console possono leggere / scrivere. Quelli standard sono: (0) STDIN, (1) STDOUT e (2) STDERR. Credo che il motivo per cui il tuo trucco funziona qui è perché tutto l'output verrà gestito dall'errore ma stai solo indirizzando STDOUT sul file. Prova a fare: "xyz> emptyfile.txt 2> & 1" per reindirizzare STDERR a qualunque cosa STDOUT stia utilizzando, che sembra reindirizzare a "emptyfile.txt". Ora dovresti vedere il messaggio di errore all'interno di quel file.
— Brent Rittenhouse,


3

Su Windows ho provato a farlo

echo off > fff1.txt

e ha creato un file chiamato fff1.txt con una dimensione del file di 0kb

Non ho trovato comandi diversi da questo che potrebbero creare un file vuoto.

Nota: è necessario trovarsi nella directory in cui si desidera creare il file.


non dimenticare di fare eco dopo aver creato il file, se necessario.
— QMaster

Questo comando blocca il cmd dopo aver fatto clic su INVIO.
— Kavin Raju S

Non sono sicuro del perché lo faccia, ma credo che dovresti fare "eco" dopo aver inserito il comando sopra.
— Omkar Agrawal,

3

Ancora un altro modo:

copy nul 2>empty_file.txt

2

Ho appena provato a Windows

copy con file.txt

quindi premere il Entertasto quindi premereCtrl+Z Enter

E ha funzionato per me.

Per Ubuntu di solito sto creando un file usando il comando VI

vi file.txt

Si aprirà il file quindi premere il ESCtasto quindi digitare : wp quindi premere il entertasto. Creerà un nuovo file con dati vuoti.


2
  • creare un file bat con contenuto echo '' > %1. (nomina il file come touch.bat)
  • aggiungi la cartella alla variabile PATH.
  • puoi usare il tocco per creare file. (Es: touch temp.txtcrea il file temp.txt)

consulta questo articolo per ulteriori informazioni.


1

Oggi ne ho scoperto uno nuovo :)

Ciò cambierà il titolo della finestra della riga di comando, ma creerà anche un file vuoto.

title > file.txt

1

Esegui CMD in modalità amministratore e digita questo:

NUL > file_name.extention

o digiti questo

echo .> file_name.extention

1

Ecco un altro modo:

rem/ > file.ext

La barra /è obbligatoria; senza di essa la parte di reindirizzamento è stata commentata da rem.


0

Innanzitutto crea il tuo file in modo che esista:

echo . > myfile.txt

Quindi sovrascrivere il file creato con una versione vuota usando il copycomando:

copy /y nul myfile.txt
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.