Sans redirection, Luc Vu o Erik Konstantopoulos point out à :
copy NUL EMptyFile.txt
copy /b NUL EmptyFile.txt
" Comment créer un fichier texte vide à partir d'un fichier batch ? " (2008) le souligne é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 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 celui de Nomad :
.>out.txt
Il y a une erreur :
'.' is not recognized as an internal or external command
Mais cette erreur est sur stderr. Et >
ne redirige que le stdout, alors que rien ont été produites.
D'où la création d'un vide fichier.
Le message d'erreur peut être ignoré ici. Ou, comme dans Pluie 's réponse redirigé vers NUL
:
.>out.txt 2>NUL
(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...)
Note : le fichier résultant n'est pas vide mais comprend une séquence de ligne de retour : 2 octets.
Este discussion indique une véritable solution par lots pour un véritable vide fichier :
<nul (set/p z=) >filename
dir filename
11/09/2009 19:45 0 filename
1 file(s) 0 bytes
Le " <nul
" pipes a nul
réponse à la set/p
qui fera en sorte que la variable variable utilisée restera inchangée. Comme d'habitude avec set/p
la chaîne à droite du signe à droite du signe égal est affichée comme une invite sans CRLF.
Puisque 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é dans La réponse de Patrick Cuff et produit également un fichier d'une longueur de 0 octet), c'est que ce "bit de redirection" (l'adresse de l'utilisateur) n'a pas d'importance. <nul...
) peut être utilisé pour lignes d'écho sans CR :
<nul (set/p z=hello) >out.txt
<nul (set/p z= world!) >>out.txt
dir out.txt
El dir
devrait indiquer que la taille du fichier est de 11 octets : " helloworld!
".
0 votes
Je viens de trouver une vraie commande batch résultant en un fichier vide (0 octet) : J'ai mis à jour ma réponse.
3 votes
Duplicata : stackoverflow.com/questions/210201 Comment créer un fichier texte vide à partir d'un fichier batch ? (Mais, à mon avis, les réponses sont meilleures ici).
0 votes
Oui, la commande copy nul > file.txt est créée avec le texte "1 fichier(s) copié(s)". Le fichier vide n'est pas créé.
5 votes
Pour moi, cela prouve que MS-DOS est une poubelle si vous ne pouvez pas créer un fichier vide avec une seule commande.
4 votes
@KolobCanyon : vous pouvez, bien sûr, par les réponses déjà postées. Mais pensez-vous vraiment que la possibilité de créer rapidement un fichier vide devrait être une priorité pour un système d'exploitation destiné aux utilisateurs finaux et devant fonctionner avec 16K de RAM ? Ce n'est pas une chose particulièrement utile à faire, après tout, sauf dans quelques rares cas limites.
0 votes
Ne redirigez pas la sortie de copy (qui est 1 fichier(s) copié(s) ). Copier nul dans le fichier : copier nul emptyFile.txt
0 votes
cd > "filename.extension"
devrait faire l'affaire, par exemplecd > file.txt
0 votes
MSDos supprime tous les fichiers de 0 octet que vous essayez de copier. Windows ne le fait pas.