..png)
Ich versuche auf der Windows-Konsole herauszufinden, ob eine Datei/ein Ordner existiert oder nicht.
EXIST
könnte im Batch verwendet werden, ist aber in der Befehlszeile nicht verfügbar:
C:\Users\WIN7PR~1>EXIST C:\Users
'EXIST' is not recognized as an internal or external command, operable program or batch file.
Antwort1
Wenn es sich bei der Ressource um eine Datei handelt, ist die Lösung, wie von anderen angegeben, ziemlich unkompliziert:
C:\> IF EXIST C:\CONFIG.SYS ECHO C:\CONFIG.SYS exists.
Leider funktioniert das oben genannte nicht für Verzeichnisse. Die EXIST-Funktion gibt für fehlende und vorhandene Ordner das gleiche Ergebnis zurück. Glücklicherweise gibt es einen obskuren Workaround:
C:\> IF NOT EXIST C:\FOLDER\NUL ECHO C:\FOLDER missing.
C:\FOLDER missing.
C:\> MD C:\FOLDER
C:\> IF EXIST C:\FOLDER\NUL ECHO C:\FOLDER exists.
C:\FOLDER exists.
Es stellt sich heraus, dass es zur Unterstützung von Konstrukten wie dem Anhängen >NUL
an Befehlsanweisungen in jedem Verzeichnis eine Art virtuelle Datei mit dem Namen „NUL“ gibt. Die Überprüfung ihrer Existenz ist gleichbedeutend mit der Überprüfung der Existenz des Verzeichnisses.
Dieses Verhalten ist in einem Microsoft Knowledge Base-Artikel dokumentiert (https://support.microsoft.com/en-us/kb/65994) und ich habe sein Verhalten unter FreeDOS 1.1 und in einer Windows 7-Eingabeaufforderung bestätigt.
EXTRA: Der KB-Artikel gibt an, dass diese Technik auch verwendet werden kann, um zu prüfen, ob ein Laufwerk vorhanden ist. Bei der Prüfung auf Laufwerksvorhandensein gibt es jedoch Einschränkungen:
Abort, Retry, Fail?
Wenn das Laufwerk nicht formatiert ist, tritt ein Fehler auf.Die Verwendung dieser Technik zum Überprüfen der Existenz eines Laufwerks hängt von der Implementierung des Gerätetreibers ab und funktioniert möglicherweise nicht immer.
Antwort2
Sie können eine einfache
DIR C:\User
Antwort3
Sie können type
den Befehl verwenden, er gibt den Inhalt einer Textdatei zurück, ohne sie zu öffnen, und für ein Verzeichnis wird Folgendes zurückgegeben: „Zugriff verweigert.“
Wenn die Datei oder das Verzeichnis nicht verfügbar ist, erhalten Sie die Meldung: Das System kann die angegebene Datei nicht finden.
Also zum Beispiel:
C:\>type c:\temp
Access is denied.
C:\>type c:\example.txt
Some example content in a text file
C:\>type c:\doesnotexist
The system cannot find the file specified.
Antwort4
Sie können diesen Code verwenden:
<pre>
:init
SETLOCAL enabledelayedexpansion
GOTO make_dir
:make_dir
ECHO .
ECHO Checking if exists directory %out_path% ...
CD %out_path%
IF !ERRORLEVEL! GTR 0 (
ECHO Directory doesn't exist, creating...
MD %out_path%
GOTO make_dir
) ELSE (
ECHO Directory already exists.
)
:GOTO back_it_up
:back_it_up
::Procedure that makes an backup
GOTO done
:done
ECHO Finished
SETLOCAL
EXIT /B
</pre>