Créer un dossier avec un lot mais seulement s’il n’existe pas déjà

Quelqu’un peut-il me dire comment procéder dans un script de lot Windows? ( *.bat ):

  • Créez un dossier uniquement s’il n’existe pas déjà

Plus en détail, je veux créer un dossier nommé VTS sur le lecteur C:\ , mais uniquement si ce dossier n’existe pas déjà. Je ne souhaite pas écraser le contenu du dossier s’il existe déjà et que le lot est exécuté.

    Vous utilisez simplement ceci: if not exist "C:\VTS\" mkdir C:\VTS il créera un répertoire uniquement si le dossier n’existe pas.

    Notez que ce test d’existence ne retournera true que si VTS existe et est un répertoire. S’il n’y est pas ou s’il existe, la commande mkdir s’exécutera et provoquera une erreur. Vous voudrez peut-être vérifier si VTS existe également sous forme de fichier.

     if exist C:\VTS\NUL echo "Folder already exists" if not exist C:\VTS\NUL echo "Folder does not exist" 

    Voir aussi https://support.microsoft.com/en-us/kb/65994

    (Mise à jour du 7 mars 2018; article de Microsoft arrêté, archivage sur https://web.archive.org/web/20150609092521/https://support.microsoft.com/en-us/kb/65994 )

    Appelez simplement mkdir C:\VTS quoi qu’il mkdir C:\VTS . Il indiquera simplement que le sous-répertoire existe déjà.

    Edit: Comme d’autres l’ont noté, cela définit% ERRORLEVEL% si le dossier existe déjà. Si votre lot (ou tout processus l’appelant) ne se soucie pas du niveau d’erreur, cette méthode fonctionne parfaitement. La question ne mentionnant aucunement le niveau d’erreur, cette réponse est parfaitement valable. Il répond aux besoins de création du dossier s’il n’existe pas et ne remplace pas le contenu d’un dossier existant. Sinon, suivez la réponse de Martin Schapendonk .

     mkdir C:\VTS 2> NUL 

    créer un dossier appelé VTS et sortie A subdirectory or file TEST already exists pour NUL .

    ou

     (C:&(mkdir "C:\VTS" 2> NUL))& 

    changez la lettre de lecteur en C: mkdir , mkdir une erreur dans NUL et exécutez la commande suivante.

     set myDIR=LOG IF not exist %myDIR% (mkdir %myDIR%) 

    J’utilise cette manière, vous devriez mettre une barre oblique inverse à la fin du nom de répertoire pour éviter que la place existe dans un fichier sans extension avec le même nom que le répertoire que vous avez spécifié, n’utilisez jamais “C: \ VTS” existe avec le nom “VTS” enregistré dans la partition “C:” , la méthode correcte consiste à utiliser “C: \ VTS \” , vérifiez la barre oblique inverse après le VTS , de même que le bon sens.

     @echo off @break off @title Create folder with batch but only if it doesn't already exist - D3F4ULT @color 0a @cls setlocal EnableDelayedExpansion if not exist "C:\VTS\" ( mkdir "C:\VTS\" if "!errorlevel!" EQU "0" ( echo Folder created successfully ) else ( echo Error while creating folder ) ) else ( echo Folder already exists ) pause exit 

    Vous pouvez utiliser:

     if not exist "C:\VTS\" mkdir "C:\VTS" 

    Vous pouvez également développer le code pour remplacer les fichiers attendus manquants.

     if not exist "C:\VTS\important.file" echo. > "C:\VTS\important.file" 

    Je l’ai créé pour mon script que j’utilise dans mon travail pour eyebeam.

     :CREATES A CHECK VARIABLE set lookup=0 :CHECKS IF THE FOLDER ALREADY EXIST" IF EXIST "%UserProfile%\AppData\Local\CounterPath\RegNow Enhanced\default_user\" (set lookup=1) :IF CHECK is still 0 which means does not exist. It creates the folder IF %lookup%==0 START "" mkdir "%UserProfile%\AppData\Local\CounterPath\RegNow Enhanced\default_user\" 

    Essaye ça

    ROBOCOPY C:\Users\ADMIN\Pictures c:%date:~4,2%%date:~7,2%%date:~10,4% /MOV

    Ce lot créera un nouveau dossier et définira son nom comme date actuelle. (03222013) Il déplacera ensuite tous les fichiers du dossier C:\Users\ADMIN\Pictures vers ce dossier nouvellement créé.

    Si aujourd’hui est le 22 mars 2013 … Tous les fichiers dans C:\Users\ADMIN\Pictures seront déplacés vers un dossier nommé 03222013 .

    Seuls les fichiers dans C:\Users\ADMIN\Pictures seront déplacés. Tout dossier dans C:\Users\ADMIN\Pictures ne sera pas touché.