2010-12-02 21 views

Répondre

567
if exist <insert file name here> (
    rem file exists 
) else (
    rem file doesn't exist 
) 

Ou sur une seule ligne (si une seule action doit se produire):

if exist <insert file name here> <action> 

par exemple, cela ouvre le bloc-notes sur autoexec.bat, si le fichier existe:

if exist c:\autoexec.bat notepad c:\autoexec.bat 
+8

Si vous traitez des chemins avec des espaces: http://stackoverflow.com/questions/138981/how-do-i-test-if-a-file-is-a-directory-in-a-batch-script – Nick

+3

@loopkin - 'else' est valide, voir" if /? " ... "La clause ELSE doit apparaître sur la même ligne que la commande après l'IF Par exemple: [... nombreux exemples d'utilisation ...]" –

+3

@ chris-j Merci Chris, tu as raison, semble que les parenthèses doivent être sur la même ligne que l'autre. C'est ce que je faisais de mal. Je pense que je ne m'habituerai jamais à la syntaxe du lot :( – loopkin

70
C:\>help if 

Effectue un traitement conditionnel dans les programmes batch.

IF [NOT] Numéro ERRORLEVEL commande

IF [NOT] chaîne1 == commande Chaîne2

IF [NOT] EXISTE commande de nom de fichier

28

Essayez quelque chose comme exemple, cité à partir de la sortie de IF /? sous Windows XP:

 
    IF EXIST filename. (
     del filename. 
    ) ELSE (
     echo filename. missing. 
    ) 

Vous pouvez également rechercher un fichier manquant avec IF NOT EXIST. La commande IF est assez puissante. La sortie de IF /? récompensera une lecture attentive. Pour cela, essayez l'option /? sur de nombreuses autres commandes intégrées pour beaucoup de gemmes cachées.

+5

Pourquoi le '.' à la fin du nom de fichier? Est-ce une faute de frappe? – Everyone

+4

J'ai cité le texte d'aide de la commande 'IF' réelle intégrée à CMD.EXE, qui avait ces points. Je ne sais pas pourquoi ils les ont inclus, cela semble incohérent. Bien sûr, ce dont le mot-clé 'EXIST' a réellement besoin est un nom de fichier valide, qui peut être pleinement qualifié. D'autres commandes utilisent l'idiome '[drive:] [path] filename' à la place du texte' filename.' use ici, ce qui est évidemment plus clair. – RBerteig