Sans redirection, Luc Vu ou Erik Konstantopoulos pointent sur à:
copy NUL EMptyFile.txt
copy /b NUL EmptyFile.txt
" Comment créer un fichier texte vide à partir d'un fichier batch? " (2008) indique également:
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 en mentionne un 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
Dans le même esprit, Samuel suggère dans les commentaires :
le plus court que j'utilise est essentiellement celui de Nomad:
.>out.txt
Cela donne une erreur:
'.' is not recognized as an internal or external command
Mais cette erreur est sur stderr. Et >
redirige uniquement stdout, où rien n'a été produit.
D'où la création d'un fichier vide . Le message d'erreur peut être ignoré ici.
(Réponse originale, novembre 2009)
echo.>filename
( echo ""
mettrait en fait "" dans le fichier! Et echo
sans le '.' mettrait " Command ECHO activated
" dans le fichier ...)
Remarque: le fichier résultant n'est pas vide mais comprend une séquence de lignes de retour: 2 octets.
Cette discussion pointe vers une véritable solution batch pour un vrai fichier vide :
<nul (set/p z=) >filename
dir filename
11/09/2009 19:45 0 filename
1 file(s) 0 bytes
Le " <nul
" envoie une nul
réponse à la set/p
commande, ce qui fera que la variable utilisée restera inchangée. Comme d'habitude avec set/p
, la chaîne à droite du signe égal s'affiche comme une invite sans CRLF.
Puisqu'ici la "chaîne à droite du signe égal" est vide ... le résultat est un fichier vide.
La différence avec cd. > filename
(qui est mentionnée dans la réponse de Patrick Cuff et produit également un fichier de 0 octet) est que ce "bit de redirection" (l' <nul...
astuce) peut être utilisé pour faire écho aux lignes sans CR :
<nul (set/p z=hello) >out.txt
<nul (set/p z= world!) >>out.txt
dir out.txt
La dir
commande doit indiquer la taille du fichier sous forme de 11 octets: " helloworld!
".