Quelqu'un peut-il se rappeler quelle était la commande pour créer un fichier vide dans MS DOS à l'aide d'un fichier BAT?
echo. 2>EmptyFile.txt
copier NUL EmptyFile.txt
DOS contient quelques fichiers spéciaux (en fait, des périphériques) qui existent dans chaque répertoire, NUL
étant l’équivalent du fichier UNIX /dev/null
: c’est un fichier magique toujours vide qui jette tout ce que vous écrivez. Voici une liste de quelques autres; CON
est parfois utile également.
Pour éviter toute sortie, vous pouvez utiliser
copy/y NUL EmptyFile.txt> NUL
/y
empêche copy
de poser une question que vous ne pouvez pas voir lorsque la sortie passe à NUL
.
type NUL > EmptyFile.txt
Après avoir lu les deux articles précédents, j’ai proposé ce mélange des deux. Cela semble un peu plus propre. Il n'y a pas besoin de s'inquiéter de la redirection du "1 fichier (s) copié". message à NUL
, comme le message précédent, et il semble bien à côté du ECHO OutputLineFromLoop >> Emptyfile.txt
qui suivra généralement dans un fichier batch.
Techniques que j'ai recueillies à partir d'autres réponses:
Crée un fichier de 0 octet de manière très claire et compatible avec les versions antérieures:
type nul >EmptyFile.txt
idée via: anonyme , Danny Backett , éventuellement d'autres personnes, inspirées par le travail de JdeBP
Un fichier de 0 octet d'une autre manière , il est rétrocompatible:
REM. >EmptyFile.txt
idée via: Johannes
Un fichier de 0 octet 3ème voie aussi compatible avec les versions antérieures:
echo. 2>EmptyFile.txt
idée via: TheSmurf
Un fichier de 0 octets de manière systématique probablement disponible depuis Windows 2000:
fsutil file createnew EmptyFile.txt 0
idée via: Emm
Un fichier de 0 octets écrasant des fichiers en lecture seule
ATTRIB -R filename.ext>NUL
(CD.>filename.ext)2>NUL
idée via: copyitright
Une nouvelle ligne (2 octets: 0x0D 0x0A
in notation hexadécimale , alternativement écrite sous la forme \r\n
) :
echo.>AlmostEmptyFile.txt
Remarque: non espace entre echo
, .
et >
.
idée via: Comment pouvez-vous afficher une nouvelle ligne dans un fichier batch?
edit Il semble que toute commande non valide redirigée dans un fichier créerait un fichier vide. heh, un long métrage! compatibilité: inconnue
TheInvisibleFeature <nul >EmptyFile.txt
Un fichier de 0 octets: commande non valide/avec un nom aléatoire (compatibilité: inconnu):
%RANDOM%-%TIME:~6,5% <nul >EmptyFile.txt
via: great source for random by Hung Huynh
edit 2 Andriy M fait remarquer le moyen probablement le plus amusant/provoquant de réaliser cela avec une commande invalide
Un fichier de 0 octets: commande non valide/funky (compatibilité: inconnue)
*>EmptyFile.txt
idée via: Andriy M
Un fichier de 0 octets venant du 4ème chemin :
break > file.txt
idée via: foxidrive grâce à commentaire de Double Gras !
REM. > vide.fichier
S'il est possible que le fichier à écrire existe déjà et soit en lecture seule, utilisez le code suivant:
ATTRIB -R filename.ext
CD .>filename.ext
Si aucun fichier n'existe, faites simplement:
CD .>filename.ext
(code mis à jour/modifié conformément au commentaire de DodgyCodeException)
Pour supprimer les erreurs éventuelles:
ATTRIB -R filename.ext>NUL
(CD .>filename.ext)2>NUL
fsutil file createnew file.cmd 0
Un de plus à ajouter aux livres - court et doux à taper.
break>file.txt
break>"file with spaces in name.txt"
Vous pouvez utiliser une commande TYPE
à la place de COPY
. Essaye ça:
TYPE File1.txt>File2.txt
Où File1.txt
est vide.
Vous pouvez également utiliser SET
pour créer un fichier null byte
comme suit
set x=x > EmptyFile.txt
Ou si vous ne voulez pas créer une variable supplémentaire, réaffectez une variable existante telle que
set Prompt=%Prompt% > EmptyFile.txt
ou comme ceci:
set "Prompt=%Prompt%" > EmptyFile.txt
Le moyen le plus simple est:
echo. > Filename.txt