80 votes

Comment vérifier si un répertoire existe dans Windows ?

Je voudrais traduire ce script Linux/Bash en script Windows :

if test -d myDirName; then echo "ok"; else mkdir myDirName; fi

Il teste si un répertoire existe, et s'il n'existe pas, il le crée.

1voto

Je vois que beaucoup ont du mal à faire la différence entre les fichiers et les dossiers. Quelqu'un a-t-il essayé d'y accéder simplement après avoir vérifié qu'il existe ? Alors le cd réussira ou échouera.

set MyDir = "MyTestDir"
IF exist MyDir (
    cd MyDir 
    IF ERRORLEVEL NEQ 0 (
        echo "Error: %MyDir% already exists, but it is a file!"
        exit 1
    ) else (
        # Do not forget to cd back
        cd ..
    )
) else (
   # Did not exist yet, so create it.
   mkdir MyDir
)

1voto

Mason M. Points 11

Voici un moyen de tester l'existence du répertoire seulement quand il s'agit d'un répertoire valide .

set myDirName=foobitybarbitybaz
dir /A:D %myDirName% >nul 2>&1
if ERRORLEVEL 1 (@mkdir %myDirName%) else (@echo "ok")

0voto

Joe Points 11
exist myDirName/nul

est aussi vrai si monNomDeDossier est un fichier, qui n'est pas la fonctionnalité recherchée

0voto

iTwasnTme Points 5586

Je préfère utiliser dir /d | findstr \[\.\.\] :

2>nul dir /d "myDirName" | findstr \[\.\.\] >nul && echo= "ok" || mkDir myDirName&&echo= Is NOT dir

2>nul dir /d "myDirName" | findstr \[\.\.\] >nul && echo= "ok" || mkDir myDirName

Pour créer s'il existe ou non et pour ignorer les erreurs...

2>nul mkDir myDirName

Aussi...

if exist "myDirName\." (echo/"ok") else mkdir myDirName

rem :: or direct create myDirName hidden/ignoring error
       2>nul mkdir myDirName & if exist "myDirName\." echo/ exist 
rem :: output: exist

-1voto

user937229 Points 1

Trouver un dossier ne devrait pas être si difficile. Ma solution, utiliser perl :

for($cnt=$#ARGV; $cnt>=0; --$cnt)
{
   if ( -d "$ARGV\[$cnt\]" ) { 
      print "argv\[$cnt\]=$ARGV\[$cnt\] is a folder\\n";
      $dir = $ARGV\[$cnt\];
      break;
   } else {
      print "argv\[$cnt\]=$ARGV\[$cnt\] is Not a folder\\n";
   }
}

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X