Vérification de l'existence d'un dossier à l'aide d'un fichier .bat [fermé]

160

Je voudrais pouvoir vérifier si un certain dossier (FolderA) existe et si tel est le cas, pour un message à afficher et ensuite le fichier de commandes à quitter.

Si FolderA n'existe pas, je voudrais alors vérifier si un autre dossier (FolderB) existe. Si FolderB n'existe pas, un message doit être affiché et le dossier doit être créé, et si FolderB existe, un message doit être affiché le disant.

Quelqu'un a-t-il une idée du code que je pourrais simplement utiliser sur le bloc-notes pour créer un fichier batch pour me permettre de le faire?

Tout cela doit être fait dans un seul .batfichier.

user3179825
la source
7
Une recherche Google propose de tester si un lecteur ou un répertoire existe . Et cela explique exactement comment faire ce que vous demandez ...
NealB
2
Une recherche pour "le répertoire de fichiers de commandes existe" ici sur SO a trouvé Fichier de commandes Windows Rechercher le répertoire s'il n'existe pas, créer puis déplacer le fichier , qui vous montre comment voir si un répertoire existe ou non. Il y a également des articles sur la création d'un répertoire à partir d'un fichier batch. Veuillez faire quelques recherches de base avant de publier de nouvelles questions; il y a de fortes chances que la question ait été posée ici précédemment. Merci.
Ken White
3
Windows batch est un langage de programmation, vérifiez si le fichier existe est une tâche de programmation. Apparaît sur le sujet.
Audrius Meskauskas
1
Doit être fermé comme dupicate de Comment tester si un fichier est un répertoire dans un script batch? au lieu de "hors-sujet"
Michael Freidgeim

Réponses:

260

Essayez d'utiliser ceci:

IF EXIST yourfilename (
echo Yes 
) ELSE (
echo No
)

Remplacez votre nom de fichier par le nom de votre fichier.

Pour un répertoire, regardez ce https://jeffpar.github.io/kbarchive/kb/065/Q65994/

C:
IF NOT EXIST C:\WIN\ GOTO NOWINDIR
CD \WIN
:NOWINDIR

la barre oblique inverse de fin ('\') semble être suffisante pour faire la distinction entre les répertoires et les fichiers ordinaires.

09stephenb
la source
2
La deuxième partie de votre réponse est incomplète.
tmj
4
if exist "c:\folder\nul" echo okn'a pas fonctionné pour moi sous Windows 7. Ce qui a fonctionné était if exist "c:\folder\" echo ok.
Alexander Gelbukh
2
@AlexanderGelbukh - Vous avez raison, le if exist "networkPath\nul"peut signaler à tort un fichier en tant que dossier sur les lecteurs réseau Windows. Malheureusement, le if exist "networkPath\"souffre du même problème. Voir la mise à jour du 08/12/2015 sur stackoverflow.com/a/8669636/1012053 pour une technique qui a été fiable dans tous mes tests.
dbenham
@AlexanderGelbukh Cela fonctionne sans les guillemets. Bien sûr, cela vous limite lorsqu'il s'agit d'avoir des espaces dans le chemin du répertoire.
Marc 2377
1
Oui, sans guillemets ça marche. Cependant, avec des guillemets, cela ne fonctionne pas même pour les lecteurs locaux: if exist c:\Windows\nul echo okdit ok, mais if exist "c:\Windows\nul" echo okne dit rien. Comme je l'ai dit, tout if exist "c:\Program Files\nul" echo okne dit rien, if exist "c:\Program Files\" echo okdit oket fonctionne donc même pour le chemin avec des espaces.
Alexander Gelbukh
34

Je pense que la réponse est ici (peut-être en double):

Comment tester si un fichier est un répertoire dans un script batch?

IF EXIST %VAR%\NUL ECHO It's a directory

Remplacez% VAR% par votre répertoire. Veuillez lire la réponse d'origine car elle contient des détails sur la gestion des espaces blancs dans le nom du dossier.

Comme l'a dit foxidrive, cela pourrait ne pas être fiable sur les fenêtres de classe NT. Cela fonctionne pour moi, mais je sais que cela a certaines limites (que vous pouvez trouver dans la question référencée)

if exist "c:\folder\" echo folder exists 

devrait être suffisant pour les fenêtres modernes.

Cosmin Vană
la source
6
La technique \ nul n'est pas fiable sur les fenêtres de classe NT. C'était bien dans MSDOS et Win9x cependant. La solution dans Windows moderne est simplement if exist "c\:folder\" echo folder exists
foxidrive
1
Je pense que cela est également spécifié dans le lien référencé.
Cosmin Vană
Je ne comprends toujours pas pourquoi j'ai été critiqué (ce qui signifie "Pas utile"). J'ai ajouté la référence à la question où les réponses couvrent le scénario requis.
Cosmin Vană
Cela pourrait ne pas être utile car il n'est pas applicable aux machines actuelles et votre réponse précédente ne faisait aucune distinction. Certaines personnes continueront de voter contre votre réponse car elle ne répond pas à la question telle que posée.
foxidrive
2
de support.microsoft.com/kb/65994 "NUL existe toujours sur un lecteur MS-DOS FAT local" - comme dansE:\NUL
CAD bloke