Quelqu'un peut-il me dire comment procéder comme suit dans un script batch Windows? ( *.bat
):
- Créer un dossier uniquement s'il n'existe pas déjà
Plus en détail, je veux créer un dossier nommé VTS
sur le C:\
lecteur, mais seulement 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é.
windows
batch-file
cmd
Facture
la source
la source
if not exist "%Folder%" mkdir "%New-Folder%"
Réponses:
Vous utilisez juste 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 vrai que si VTS existe et est un répertoire. S'il n'est pas là, ou s'il existe en tant que fichier, la commande mkdir s'exécutera et devrait provoquer une erreur. Vous voudrez peut-être vérifier si VTS existe également en tant que fichier.
la source
NUL
.if exist "a" if not exist "a\" (echo "it's a file") else (echo "it's a dir")
. À propos de votre dernière phrase, je soupçonne que quelque chose ne va pas avec votre fichier de commandes ailleurs.Voir également https://support.microsoft.com/en-us/kb/65994
(Mise à jour du 7 mars 2018; l'article de Microsoft est arrêté, archivez sur https://web.archive.org/web/20150609092521/https://support.microsoft.com/en-us/kb/65994 )
la source
NUL
est avec un L.Appelez juste
mkdir C:\VTS
quoi qu'il arrive. Il signale simplement que le sous-répertoire existe déjà.Modifier: Comme d'autres l'ont noté, cela 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 bien. La question ne mentionnant pas d'éviter 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 n'écrase pas le contenu d'un dossier existant. Sinon, suivez la réponse de Martin Schapendonk .
la source
créer un dossier appelé
VTS
et sortirA subdirectory or file TEST already exists
versNUL
.ou
changer la lettre de lecteur
C:
,mkdir
erreur de sortieNUL
et exécutez la commande suivante.la source
NUL
un fichier de sortie.la source
log
. C'est une différence subtile, mais cela entraînera des bogues difficiles à trouver dans vos scripts.J'utilise de cette façon, vous devez mettre une barre oblique inversée à la fin du nom du répertoire pour éviter que cet endroit 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" car il peut un fichier existe avec le nom "VTS" enregistré dans la partition "C:" , la bonne façon est d'utiliser "C: \ VTS \" , vérifiez la barre oblique inverse après le VTS , c'est donc la bonne façon.
la source
!errorlevel!
, c'est-à-dire l'expansion retardée. Sinon, la variableERRORLEVEL
serait analysée avant d'entrer la premièreif
(c'est-à-dire au moment de l'analyse). Maintenant, il est analysé au moment de l'exécution, il peut donc capturer le résultat demkdir
. Vous avez également raison, même si vous testez l'existence, vous devez toujours tester le succès (pensez: erreur d'accès refusé, par exemple). Très bonne solution par rapport aux autres, +10 !!!Vous pouvez utiliser:
Vous pouvez également développer le code pour remplacer tous les fichiers attendus manquants.
la source
j'ai créé ceci pour mon script que j'utilise dans mon travail pour eyebeam.
la source