web-dev-qa-db-fra.com

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

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

  • Créer un dossier seulement 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 veux pas écraser le contenu du dossier s'il existe déjà et que le lot est exécuté.

398
Bill

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

Notez que ce test d’existence ne renverra true que si VTS existe et qu’il s’agit d’un répertoire. Si ce n'est pas le cas, ou existe-t-il en tant que fichier, la commande mkdir sera exécutée et devrait provoquer une erreur. Vous voudrez peut-être vérifier si VTS existe également sous forme de fichier.

558
The Answerer
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 en panne, archive sur https://web.archive.org/web/20150609092521/https://support.Microsoft.com/en-us/kb/65994 )

201
Martin Schapendonk

Il suffit d'appeler mkdir C:\VTS quoi qu'il arrive. Il va simplement signaler que le sous-répertoire existe déjà.

Edit: Comme d'autres l'ont noté, ceci définit le% ERRORLEVEL% si le dossier existe déjà. Si votre lot (ou tout processus qui l'appelle) ne se soucie pas du niveau d'erreur, cette méthode fonctionne correctement. Puisque la question ne mentionnait pas d'éviter le niveau d'erreur, cette réponse est parfaitement valide. Il répond aux besoins de création du dossier s'il n'existe pas et n'écrase pas le contenu d'un dossier existant. Sinon, suivez réponse de Martin Schapendonk .

51
Agent_9191
mkdir C:\VTS 2> NUL

créez un dossier appelé VTS et sortez A subdirectory or file TEST already exists vers NUL.

ou

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

remplacez la lettre de lecteur par C:, mkdir, erreur de sortie par NUL et exécutez la commande suivante.

36
3years2late
set myDIR=LOG
IF not exist %myDIR% (mkdir %myDIR%)
29
Robie

J'utilise cette façon, vous devriez mettez une barre oblique inverse à la fin du nom du répertoire pour éviter que cet endroit existe dans un fichier sans extension portant le même nom que le répertoire que vous avez spécifié, n'utilisez jamais "C:\VTS" car il peut exister un fichier avec le nom "VTS" enregistré dans "C:" partition, la bonne façon est d'utiliser - "C:\VTS \", vérifiez la barre oblique inverse après le VTS, la méthode est donc la bonne.

@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
16
D3F4ULT

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"
15
user5628226

j'ai créé ceci 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\"
0
Winston