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.