Quelqu'un peut-il me dire comment procéder dans un script batch Windows? (*.bat
):
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é.
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.
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 )
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 .
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.
set myDIR=LOG
IF not exist %myDIR% (mkdir %myDIR%)
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
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"
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\"