我在 Windows 控制台上尝试找出文件/文件夹是否存在。
EXIST
可以批量使用,但是不能在命令行上使用:
C:\Users\WIN7PR~1>EXIST C:\Users
'EXIST' is not recognized as an internal or external command, operable program or batch file.
答案1
当资源是文件时,解决方案非常简单,正如其他人指出的那样:
C:\> IF EXIST C:\CONFIG.SYS ECHO C:\CONFIG.SYS exists.
不幸的是,上述方法不适用于目录。EXIST 函数对缺失和存在的文件夹返回相同的结果。幸运的是,有一个不太明显的解决方法:
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.
事实证明,为了支持诸如>NUL
在命令语句上附加之类的构造,每个目录中都有一个名为“NUL”的虚拟文件。检查它的存在相当于检查目录的存在。
此行为记录在 Microsoft 知识库文章 (https://support.microsoft.com/en-us/kb/65994) 并且我已经确认了它在 FreeDOS 1.1 和 Windows 7 命令 shell 上的行为。
额外信息:知识库文章指出,此技术还可用于检查驱动器是否存在。但是,在检查驱动器是否存在的情况下,存在一些注意事项:
Abort, Retry, Fail?
如果驱动器未格式化,则会发生错误。使用此技术检查驱动器是否存在取决于设备驱动程序的实现,并且可能并不总是有效。
答案2
您可以使用简单的
DIR C:\User
答案3
您可以使用type
命令,它将返回文本文件的内容而不打开它,对于目录它将返回:访问被拒绝。
如果文件或目录不可用,您会收到以下消息:系统找不到指定的文件。
例如:
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.
答案4
你可以使用这个代码:
<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>