574 votes

Comment créer un fichier vide en ligne de commande sous Windows ?

Comment puis-je créer un fichier vide à partir de la ligne de commande DOS/Windows ?

J'ai essayé :

copy nul > file.txt

Mais il affiche toujours qu'un fichier a été copié.

Existe-t-il une autre méthode dans le cmd standard ?

Il doit s'agir d'une méthode qui ne nécessite pas l'option touchez à partir de Cygwin ou toute autre commande non standard. La commande doit être exécutée à partir d'un script, donc les frappes au clavier ne peuvent pas être utilisées.

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éé.

658voto

VonC Points 414372

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! ".

2 votes

Vous voudriez en fait echo.>filename car il inclura l'espace ainsi que le caractère de nouvelle ligne.

1 votes

Utilisation de la rem évite de créer un fichier contenant une ligne vide.

0 votes

@Agent_9191 : vrai, j'ai mis à jour ma réponse. @Greg : je ne suis pas sûr de ce que vous voulez dire : rem>filename produit le même résultat (2 octets)

289voto

Justin Points 671

Essayez ça :

type NUL > 1.txt

cela créera définitivement un fichier vide.

0 votes

Cela ajoute "NUL est ./NUL" au fichier

130voto

Patrick Cuff Points 13362

Voici un autre moyen :

cd. > filename

22 votes

cd. > filename ne fonctionne pas pour moi au lieu de cd > filename fonctionne !

3 votes

"cd. > nom de fichier" crée un fichier vide, sinon le chemin du fichier sera imprimé dans le fichier nouvellement créé à l'aide de la commande "cd > nom de fichier".

8 votes

Utilisez ça : cd . > filename.extension Ce qui signifie que vous avez besoin d'un espace entre cd y .

81voto

qid Points 1289

Si vous voulez vraiment un fichier totalement vide, sans aucune sortie vers stdout, vous pouvez tricher un peu :

copy nul file.txt > nul

Il suffit de rediriger stdout vers nul, et la sortie de copy disparaît.

2 votes

Il échoue si le fichier .txt existe.

6 votes

Échouer si le fichier existe est un bon comportement si je comprends la question.

33 votes

+1. Il est étonnant de constater que la réponse acceptée est à moitié fausse et à moitié alambiquée, alors que la réponse manifestement correcte n'est pratiquement pas créditée. Pour ajouter à cela : type nul>file serait un autre moyen.

36voto

nash Points 1644

Sur la ligne de commande Windows, une façon de procéder serait d'utiliser fsutil :

fsutil file createnew <filename> <size>

Un exemple :

fsutil file createnew myEmptyFile.txt 0

Le tableau ci-dessous est destiné à la ligne de commande *nix.

touch filename

Cette commande modifie la date de modification d'un fichier ou le crée si le fichier n'est pas trouvé.

0 votes

Malheureusement, la question précise : "Sans la commande touch de Cygwin."

3 votes

Il existe des implémentations non-Cygwin de la commande touch : unxutils.sourceforge.net est bon.

0 votes

Dans *nix, je suis personnellement partisan d'un simple > filename qui peut également être utilisé pour tronquer un fichier existant.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X