Come creare un file di testo vuoto da un file batch?


244

Qualcuno può ricordare qual era il comando per creare un file vuoto in MSDOS usando il file BAT?


3
Sempre su stackoverflow.com/questions/1702762 , "Come creare un file vuoto dalla riga di comando?".
Peter Mortensen,

6
Non stai confondendo DOS e cmd.exe, vero?
utente sconosciuto

LEGGIMI: Set-Content "your_file.txt" .gitignore -Encoding utf8distingue tra maiuscole e minuscole e forza la codifica utf8! (Ho anche pubblicato questo come risposta).
Wolfpack'08

Risposte:


235
echo. 2>EmptyFile.txt

49
Questo fa eco a una nuova riga di stdout, anche se ... la mia risposta no.
effimero

7
A volte è rilevante; Avevo il tocco in giro fino a quando non mi venne l'idea di copiare NUL (o digitare NUL> file) allo scopo di ottenere file a 0 byte. :-)
Joey

18
Per unire la risposta di effimero e questa, potresti fare: "echo.> NUL 2> EmptyFile.txt" per ottenere gli stessi risultati senza
produrre

7
Why is .inecho.
Ninh Pham,

3
@Reegan Se si utilizzava echo 2senza ., la console diceva "ECHO è spento". Utilizzando in modo echo. 2efficace silenzia l'output della console visualizzando solo una nuova riga.
OneManBand,

362
copia NUL EmptyFile.txt

DOS ha alcuni file speciali (dispositivi, in realtà) che esistono in ogni directory, NULessendo l'equivalente di UNIX /dev/null: è un file magico che è sempre vuoto e getta via tutto ciò che gli scrivi. Ecco un elenco di alcuni altri; CONè anche utile occasionalmente.

Per evitare di avere alcun output, è possibile utilizzare

copia / y NUL EmptyFile.txt> NUL

/yimpedisce copydi porre una domanda che non è possibile visualizzare quando viene inviato l'output NUL.


36
+1: la domanda indica un file vuoto , quindi la risposta accettata è errata.
Joe,

9
La soluzione di DannySmurf in realtà crea un file vuoto: una nuova riga va su stdout, nulla va su stderr (diretto nel nuovo file). Ma grazie per il +1 comunque
effimero

2
digitare nul> EmptyFile.txt è la soluzione più breve. Tuttavia la tua risposta è migliore della soluzione accettata, perché il tuo file sarà davvero vuoto. +1
TPAKTOPA

3
Avvertenza: sì, la domanda era su come creare un file vuoto, tuttavia di solito si desidera "assicurarsi che il file esista". Quando si utilizza il copy /Y NULcomando, è possibile cancellare il contenuto esistente. Se sei abituato al touchcomando di Unix , questo potrebbe non essere affatto quello che ti aspetti. L'uso type NUL >> emptyfile.txtè più sicuro in questo senso.
Diavolo

Non ho trovato alcuna informazione a CONparte quella collegata in questa risposta. Qualcuno potrebbe condividere qualche lettura leggera?
Sinjai,

182
type NUL > EmptyFile.txt

Dopo aver letto i due post precedenti, questa miscela dei due è ciò che mi è venuta in mente. Sembra un po 'più pulito. Non è necessario preoccuparsi di reindirizzare "1 file copiati". messaggio a NUL, come fa il post precedente, e sembra carino accanto a quello ECHO OutputLineFromLoop >> Emptyfile.txtche di solito seguirà in un file batch.


13
+1 questo è quello naturale che mi viene in mente per la prima volta, non i congegni con stderr ecc.
Amit Naidu,

2
Hai ragione. Questo metodo evita il flag / y sul comando copia.
Djangofan,

Breve e facile Alcune altre soluzioni qui non creano un nuovo file di zero byte!
Christian St.

66

Tecniche che ho raccolto da altre risposte:

Rende un file di 0 byte un modo molto chiaro, compatibile con le versioni precedenti:

type nul >EmptyFile.txt

idea tramite: anonimo , Danny Backett , forse altri, ispirato al lavoro di JdeBP

Un file da 0 byte in un altro modo , è compatibile con le versioni precedenti:

REM. >EmptyFile.txt

idea via: Johannes

Un file di 0 byte anche un 3 ° modo compatibile con le versioni precedenti:

echo. 2>EmptyFile.txt

idea via: TheSmurf

Un file di 0 byte nel modo sistematico probabilmente disponibile da Windows 2000:

fsutil file createnew EmptyFile.txt 0

idea via: Emm

Un file di 0 byte che sovrascrive i file di sola lettura

ATTRIB -R filename.ext>NUL
(CD.>filename.ext)2>NUL

idea via: copyitright

Una singola riga (2 byte: 0x0D 0x0Ain notazione esadecimale , in alternativa scritta come \r\n):

echo.>AlmostEmptyFile.txt

Nota: nessuno spazio tra echo, .e >.

idea via: Come si può fare eco a una nuova riga in file batch?


modifica Sembra che qualsiasi comando non valido reindirizzato a un file creerebbe un file vuoto. eh, una caratteristica! compatibilità: sconosciuta

TheInvisibleFeature <nul >EmptyFile.txt

Un file di 0 byte: comando non valido / con un nome casuale (compatibilità: sconosciuto):

%RANDOM%-%TIME:~6,5% <nul >EmptyFile.txt

via: grande fonte casuale di Hung Huynh

modifica 2 Andriy M indica il modo probabilmente più divertente / stimolante per raggiungere questo obiettivo tramite un comando non valido

Un file di 0 byte: comando non valido / il modo funky (compatibilità: sconosciuto)

*>EmptyFile.txt

idea via: Andriy M

Un file di 0 byte in quarta direzione :

break > file.txt

idea via: foxidrive grazie al commento di Double Gras !


In realtà type nul ...non type <nul ...lo è.
Andriy M,

@AndriyM grazie hai ragione ho fatto la modifica! Non ho notato perché abbastanza interessante funziona con quello sbagliato. il che può significare che qualsiasi comando non valido reindirizzato a un nome file creerebbe un file vuoto! appena provato con NonExistentCommand <nul >EmptyFile.txte ha funzionato
n611x007

poiché non sarebbe sicuro fare affidamento su un nome di comando codificato prevedendo che fosse "non valido", ho aggiunto un'opzione di nome di comando randomizzata
n611x007

2
Ancora un altro: break > file.txtoggetti di scena foxidrive
Gras Double

3
E la maggior parte dei comandi può essere utilizzata >>se è necessario "deve esistere ma non deve essere troncato se esiste" (come touchfa Unix )
eckes,

25

REM. > file vuoto


Sono bloccato su Windows CE, e questa è l'unica risposta che crea e svuota il file! Gli altri approcci o aggiungono una riga vuota o semplicemente non funzionano ...
AntonyG,

L'unico problema con questa soluzione è che se esiste un file chiamato REM nella directory corrente e si digita REM., cmd risponderà con "'rem.' non è riconosciuto come comando interno o esterno, programma eseguibile o file batch. "
DodgyCodeException

@DodgyCodeException, usando rem/invece di rem.risolvere quel problema ...
aschipfl

@aschipfl grazie, è interessante. È anche interessante notare come questa risposta del 2010 abbia commenti distanziati tra loro di diversi anni. Una conversazione slowwwww!
DodgyCodeException,

8

Se esiste la possibilità che il file da scrivere esista già e sia di sola lettura, utilizzare il seguente codice:

ATTRIB -R filename.ext
CD .>filename.ext

Se non esiste alcun file, è sufficiente:

CD .>filename.ext

(codice aggiornato / modificato in base al commento di DodgyCodeException)

Per eliminare eventuali errori che possono verificarsi:

ATTRIB -R filename.ext>NUL
(CD .>filename.ext)2>NUL

1
L'unico problema con questa soluzione è che se esiste un file chiamato CD(nessuna estensione) nella directory corrente e si digita CD., cmd risponderà con "'CD.' non è riconosciuto come comando interno o esterno, programma eseguibile o file batch. " Se invece digiti CD .(con uno spazio prima del punto) funzionerà.
DodgyCodeException


7

Un altro da aggiungere ai libri: breve e dolce da scrivere.

break>file.txt
break>"file with spaces in name.txt"

Immagino che potremmo saltare le citazioni
Nam G VU,

@NamGVU Le virgolette vengono utilizzate nel nome file di destinazione, se si sceglie di utilizzare elementi di nome file lunghi come spazio o & ecc. Non fanno parte del contenuto del file.
foxidrive,

Sì, sono d'accordo ^^ Autorizzazione ad aggiornare la tua come discusso.
Nam G VU,

@NamGVU Le virgolette possono essere lasciate sul posto con o senza un nome di file lungo. Immagino che se viene digitato dalla riga di comando con un breve nome di file, quindi non vorrai digitare inutilmente.
foxidrive,

Suggerisco di rimuovere la seconda riga da questa risposta. IMO questa è la migliore risposta sulla domanda finora, ma la seconda riga non aggiunge davvero valore a meno che la persona che sta provando a usarla non conosca le basi della gestione degli spazi bianchi per la riga di comando.
kayleeFrye_onDeck

2

È possibile utilizzare un TYPEcomando anziché COPY. Prova questo:

TYPE File1.txt>File2.txt

Dove File1.txtè vuoto


3
Puoi anche faretype NUL>File2.txt
Danny Beckett il

6
A proposito, come ottenere File1.txt?
TomeeS

1

È inoltre possibile utilizzare SETper creare un bytefile null come segue

set x=x > EmptyFile.txt

O se non si desidera creare una variabile aggiuntiva riassegnare una variabile esistente come

set PROMPT=%PROMPT% > EmptyFile.txt

o in questo modo:

set "PROMPT=%PROMPT%" > EmptyFile.txt

0

Ci sono infiniti approcci.

Comandi che non generano nulla:

break
cls
color
goto
pushd
popd
prompt
title

Comandi strani:

CD.
REM.
@echo off
cmd /c
START >FILE

Il printcomando obsoleto produce un file vuoto:

print /d:EMPTY_TEXT_FILE nul

-2

Il modo più semplice è:

echo. > Filename.txt


8
Questo creerà un file con un carattere spazio seguito da un carattere di ritorno a capo seguito da un nuovo carattere di riga, non un file vuoto.
Andriy M,

Vale la pena guardare la mia risposta (sotto) perché cambia la codifica.
Wolfpack'08

-3

IMPORTANTE:

Se non si imposta la codifica, molti software possono rompersi. git è un esempio molto popolare.

Set-Content "your_ignore_file.txt" .gitignore -Encoding utf8 questo è sensibile al maiuscolo / minuscolo e forza la codifica utf8!


3
In che modo la codifica è rilevante per la creazione di un file vuoto ? Un file null byte non ha bisogno di alcuna codifica ed è difficile contrassegnarlo con una DBA (0 byte)
jeb

@jeb perché le persone riempiono file vuoti e quando i file riempiti vengono utilizzati come file di impostazioni, creano errori quando non sono UTF8. In effetti, direi che le persone riempiono quasi sempre i file e non li lasciano vuoti, e non userei nessun altro metodo per creare un file vuoto che in seguito intendevo modificare perché quasi sempre voglio essere sicuro che i miei file sono UTF8. Ad esempio, l'esercitazione .git su github chiede all'utente di creare un file vuoto che verrà riempito in seguito, e l'altro metodo crea un file con una strana codifica di Windows.
Wolfpack'08,
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.