Überprüfen, ob ein Ordner vorhanden ist, mithilfe einer .bat-Datei [geschlossen]

160

Ich möchte überprüfen können, ob ein bestimmter Ordner (FolderA) vorhanden ist, und wenn ja, ob eine Nachricht angezeigt und anschließend die Batchdatei beendet werden soll.

Wenn FolderA nicht existiert, möchte ich prüfen, ob ein anderer Ordner (FolderB) existiert. Wenn OrdnerB nicht vorhanden ist, sollte eine Nachricht angezeigt und der Ordner erstellt werden. Wenn OrdnerB vorhanden ist, sollte eine entsprechende Nachricht angezeigt werden.

Hat jemand eine Idee zu dem Code, den ich einfach auf dem Editor verwenden könnte, um eine Batch-Datei zu erstellen, damit ich dies tun kann?

All dies muss in einer .batDatei erfolgen.

user3179825
quelle
7
Bei einer Google-Suche wird getestet, ob ein Laufwerk oder ein Verzeichnis vorhanden ist . Und das erklärt genau, wie man das macht, wonach man fragt ...
NealB
2
Eine Suche nach "Batch-Datei-Verzeichnis existiert" hier auf SO gefunden Windows Batch-Datei Suchen Sie nach Verzeichnis, falls nicht vorhanden, erstellen Sie und verschieben Sie die Datei , um zu sehen, ob ein Verzeichnis vorhanden ist oder nicht. Hier finden Sie auch Beiträge zum Erstellen eines Verzeichnisses aus einer Batchdatei. Bitte machen Sie einige Grundlagenforschung, bevor Sie neue Fragen stellen. Die Chancen stehen gut, dass die Frage hier schon einmal gestellt wurde. Vielen Dank.
Ken White
3
Windows Batch ist eine Programmiersprache. Überprüfen Sie, ob die Datei vorhanden ist. Dies ist eine Programmieraufgabe. Erscheint zum Thema.
Audrius Meskauskas
1
Sollte als Duplikat von Wie wird getestet, ob eine Datei ein Verzeichnis in einem Batch-Skript ist geschlossen? statt "off-topic"
Michael Freidgeim

Antworten:

259

Versuchen Sie Folgendes:

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

Ersetzen Sie Ihren Dateinamen durch den Namen Ihrer Datei.

Ein Verzeichnis finden Sie unter https://jeffpar.github.io/kbarchive/kb/065/Q65994/

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

Ein nachfolgender Backslash ('\') scheint ausreichend zu sein, um zwischen Verzeichnissen und normalen Dateien zu unterscheiden.

09stephenb
quelle
2
Der zweite Teil Ihrer Antwort ist unvollständig.
tmj
4
if exist "c:\folder\nul" echo okhat bei mir unter Windows 7 nicht funktioniert. Was funktioniert hat war if exist "c:\folder\" echo ok.
Alexander Gelbukh
2
@AlexanderGelbukh - Sie haben Recht, das if exist "networkPath\nul"kann eine Datei fälschlicherweise als Ordner auf Windows-Netzlaufwerken melden. Leider hat der if exist "networkPath\"das gleiche Problem. Eine Technik, die bei all meinen Tests zuverlässig war, finden Sie im Update vom 08.12.2015 unter stackoverflow.com/a/8669636/1012053 .
Dbenham
@AlexanderGelbukh Es funktioniert ohne die Anführungszeichen. Dies schränkt Sie natürlich ein, wenn es darum geht, Leerzeichen im Verzeichnispfad zu haben.
März 2377
1
Ja, ohne Anführungszeichen funktioniert es. Mit Anführungszeichen funktioniert es jedoch nicht einmal für lokale Laufwerke: if exist c:\Windows\nul echo oksagt ok, if exist "c:\Windows\nul" echo oksagt aber nichts. Wie ich schon sagte, if exist "c:\Program Files\nul" echo oksagt zwar nichts, if exist "c:\Program Files\" echo oksagt okund arbeitet also auch für Wege mit Räumen.
Alexander Gelbukh
34

Ich denke, die Antwort ist hier (möglicherweise doppelt):

Wie teste ich, ob eine Datei ein Verzeichnis in einem Batch-Skript ist?

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

Ersetzen Sie% VAR% durch Ihr Verzeichnis. Bitte lesen Sie die Originalantwort, da der Ordnername Details zum Umgang mit Leerzeichen enthält.

Wie foxidrive sagte, ist dies unter Fenstern der NT-Klasse möglicherweise nicht zuverlässig. Es funktioniert für mich, aber ich weiß, dass es einige Einschränkungen hat (die Sie in der angegebenen Frage finden)

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

sollte für moderne Fenster ausreichen.

Cosmin Vană
quelle
6
Die \ nul-Technik ist unter Fenstern der NT-Klasse nicht zuverlässig. In MSDOS und Win9x war es jedoch in Ordnung. Die Lösung in modernen Windows ist einfach if exist "c\:folder\" echo folder exists
foxidrive
1
Ich denke, dies ist auch in dem Link angegeben, auf den verwiesen wird.
Cosmin Vană
Verstehe immer noch nicht, warum ich herabgestimmt wurde (was "nicht nützlich" bedeutet). Ich habe den Verweis auf die Frage hinzugefügt, in der die Antworten das erforderliche Szenario abdecken.
Cosmin Vană
Nicht nützlich könnte sein, weil es nicht auf aktuelle Maschinen anwendbar ist und Ihre frühere Antwort keinen Unterschied machte. Einige Leute werden Ihre Antwort immer noch ablehnen, weil sie die gestellte Frage nicht beantwortet.
foxidrive
2
von support.microsoft.com/kb/65994 "NUL existiert immer auf einem lokalen MS-DOS FAT-Laufwerk" - wie inE:\NUL
CAD-Typ