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.