web-dev-qa-db-fra.com

Vérifier si un fichier / dossier existe, avec la ligne de commande cmd (PAS le script batch)

Je suis sur la console Windows en train d'essayer de savoir si un fichier/dossier existe ou non.

EXIST peut être utilisé en batch, mais il n'est pas disponible sur la ligne de commande:

C:\Users\WIN7PR~1>EXIST C:\Users
'EXIST' is not recognized as an internal or external command, operable program or batch file.
9
Nicolas Raoul

La solution lorsque la ressource est un fichier est assez simple, comme l’indiquent d’autres:

C:\> IF EXIST C:\CONFIG.SYS ECHO C:\CONFIG.SYS exists.

Malheureusement, ce qui précède ne fonctionne pas pour les répertoires. La fonction EXIST renvoie le même résultat pour les dossiers manquants et présents. Heureusement, il existe une solution de contournement obscure:

C:\> IF NOT EXIST C:\FOLDER\NUL ECHO C:\FOLDER missing.
C:\FOLDER missing.
C:\> MD C:\FOLDER
C:\> IF EXIST C:\FOLDER\NUL ECHO C:\FOLDER exists.
C:\FOLDER exists.

Il s'avère que pour prendre en charge des constructions telles que l'ajout de >NUL sur les instructions de commande, il existe une sorte de fichier virtuel nommé "NUL" dans chaque répertoire. La vérification de son existence équivaut à une vérification de l'existence du répertoire.

Ce comportement est documenté dans un article de la base de connaissances Microsoft ( https://support.Microsoft.com/en-us/kb/65994 ). a confirmé son comportement sur FreeDOS 1.1 et dans un shell de commande Windows 7.

EXTRA: L'article de la Base de connaissances indique que cette technique peut également être utilisée pour voir si un lecteur est présent. Dans le cas de la vérification de l'existence d'un lecteur, cependant, des mises en garde existent:

  • Une erreur Abort, Retry, Fail? se produit si le lecteur n'est pas formaté.

  • L'utilisation de cette technique pour vérifier l'existence d'un lecteur dépend de la mise en œuvre du pilote de périphérique et peut ne pas toujours fonctionner.

10
kbulgrien

Vous pouvez utiliser un simple

DIR C:\User
6
bummi

Vous pouvez utiliser la commande type, elle retournera le contenu d'un fichier texte sans l'ouvrir, et pour un répertoire, elle retournera: Access est refusé.

Si le fichier ou le répertoire n'est pas disponible, vous obtenez le message suivant: Le système ne peut pas trouver le fichier spécifié.

Donc par exemple:

C:\>type c:\temp
Access is denied.

C:\>type c:\example.txt
Some example content in a text file

C:\>type c:\doesnotexist
The system cannot find the file specified.
5
Bart Koopman

Il suffit de mettre if à l'avant :)

if exist C:\Users echo It exists!
4
Bali C