如何检查 If Exist 语句中是否存在 或 文件?
比如
If exist "C:/Windows/" OR "C:/Windows2" (
Do something
) else (
Something else
)
我该怎么做?我只想要么存在,要么做某事。
简单示例1:
@echo off
if not exist "%SystemRoot%\" if not exist "C:\Windows2" goto MissingFolderFile
echo Found either the directory %SystemRoot% or the file/folder C:\Windows2.
rem Insert here more commands to run on either the folder C:\Windows
rem or the file/folder (=any file system entry) C:\Windows2 existing.
goto EndDemo
:MissingFolderFile
echo There is neither the directory %SystemRoot% nor the file/folder C:\Windows2.
rem Insert here more commands to run on neither folder C:\Windows
rem nor file/folder C:\Windows2 existing.
:EndDemo
pause
Windows 命令处理器旨在逐个处理命令行,这就是“批处理”一词的含义。命令 GOTO 是在批处理文件中使用的首选命令,不是在下一个命令行上继续批处理,而是根据 IF 条件继续批处理,即从命令的一个堆栈(即批处理)更改处理行到另一组命令行。 简单示例2:
@echo off
if exist "%SystemRoot%\" goto FolderExists
if exist "C:\Windows2" goto FS_EntryExists
echo There is neither the directory %SystemRoot%\ nor C:\Windows2.
rem Insert here more commands to run on neither folder C:\Windows
rem nor file/folder/reparse point C:\Windows2 existing.
goto EndDemo
:FS_EntryExists
echo The file system entry (file or folder) C:\Windows2 exists.
rem Insert here more commands to run on C:\Windows2 existing.
goto EndDemo
:FolderExists
echo The folder %SystemRoot% exists.
rem Insert here more commands to run on folder C:\Windows existing.
:EndDemo
pause
要了解所使用的命令及其工作原理,请打开命令提示符
窗口,执行以下命令,并完整、仔细地阅读每个命令显示的帮助页面。
echo /?
goto /?
if /?
rem /?
Windows 上的目录分隔符是
\
,而不是 Linux 或 Mac 上的
/
。在将不带或带通配符模式的文件/文件夹参数字符串传递到文件系统之前,Windows 文件管理通常会自动将所有 /
替换为 \
,如 Microsoft 在有关命名文件、路径和命名空间的文档中所述。 。但是在文件/文件夹参数字符串中使用
/
而不是 \
仍然会导致意外行为。由于在命令提示符窗口中直接运行以下命令行而使用 /
导致意外行为的示例:
for %I in ("%SystemDrive%/Windows/*.exe") do @if exist "%I" (echo Existing file: "%I") else echo File not found: "%I"
此命令行输出由FOR
在 Windows 目录中找到的可执行文件名列表,这些文件名对于命令 IF 不存在,只是因为使用 /
导致将找到的文件名分配给循环变量小路。因此,仅当系统驱动器上的当前目录恰好是 Windows 目录时,此命令行才有效。
\
作为目录分隔符的相同命令行:
for %I in ("%SystemDrive%\Windows\*.exe") do @if exist "%I" (echo Existing file: "%I") else echo File not found: "%I"
此命令行将 Windows 目录中可执行文件的每个文件名输出为具有完整路径的现有文件。
另一个例子:
当前驱动器的根目录中有一个目录
Downloads
,该驱动器上的当前目录是
Temp
,例如D:\Downloads
是想要的当前目录,D:\Temp
是当前目录。使用的命令是:
cd /Downloads
结果是错误信息:
系统找不到指定的路径。
正确使用目录分隔符的命令:
cd \Downloads
此命令适用于
D:\Temp
为当前目录且
D:\Downloads
已存在。CD 将不正确的 /Downloads
目录路径开头的字符串
/D
解释为选项 /D
来更改驱动器,并在当前目录中搜索 ownloads
而不是根目录中的 Downloads
的原因当前驱动器的目录。通过使用正确的目录参数字符串 \Downloads
可以避免 CD 的错误解释。摘要:\
是目录分隔符,
/
是命令选项。