web-dev-qa-db-fra.com

Comment créer un fichier texte vide à partir d'un fichier de commandes?

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?

226
m_pGladiator
echo. 2>EmptyFile.txt
225
TheSmurf
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.

340
ephemient
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.

176
Anonymous

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 !

57
n611x007

REM. > vide.fichier

25
Johannes

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
8
script'n'code
fsutil file createnew file.cmd 0
7
Emm

Un de plus à ajouter aux livres - court et doux à taper.

break>file.txt
break>"file with spaces in name.txt"
7
foxidrive

Vous pouvez utiliser une commande TYPE à la place de COPY. Essaye ça:

TYPE File1.txt>File2.txt

File1.txt est vide.

2
Mark Fanto

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
1
PeterE

Le moyen le plus simple est:

echo. > Filename.txt

0
Batchman