windows 检查是否存在具有模式的文件

eqoofvh9  于 2022-11-18  发布在  Windows
关注(0)|答案(4)|浏览(122)

我有一个奇怪的情况,我不知道是什么错了
我需要检查目录中是否存在至少一个具有模式的文件。

IF EXIST d:\*Backup*.* (
   ECHO "file exist"
) ELSE (
   ECHO "file not exist"
)

如果在d:\我有一个文件x_Backup.txt和一个文件夹Backup我得到file exist,但如果我只有文件夹Backup我再次得到file exist,似乎从路径的点被忽略。

2izufjch

2izufjch1#

您也可以使用未记录的通配符来实现此目的。

IF EXIST "D:\*Backup*.<" (
   ECHO "file exist"
) ELSE (
   ECHO "file not exist"
)

在以下两个链接中详细讨论了此通配符选项和其他选项。http://www.dostips.com/forum/viewtopic.php?t=6207
http://www.dostips.com/forum/viewtopic.php?f=3&t=5057
从这些链接:

The following wildcard characters can be used in the pattern string.

Wildcard character  Meaning

* (asterisk)
Matches zero or more characters

? (question mark)
Matches a single character

" 
Matches either a period or zero characters beyond the name string

>
Matches any single character or, upon encountering a period or end of name string, advances the expression to the end of the set of contiguous >

<
Matches zero or more characters until encountering and matching the final . in the name
e5njpo68

e5njpo682#

使用此命令;它适用于任何特定模式:

set "fileExist="
for %%a in (d:\*Backup*.*) do set "fileExist=1" & goto continue
:continue
IF DEFINED fileExist (
   ECHO "file exist"
) ELSE (
   ECHO "file not exist"
)
muk1a3rh

muk1a3rh3#

这是另一种选择。

dir d:\*back*.* /b /a-d >nul 2>&1
if errorlevel 1 echo files exist
6mzjoqzu

6mzjoqzu4#

*.*相当于dos中的*。它只是表示“任何东西”,而不是“任何东西-句点-任何东西”。
要检查目录,请尝试以下操作:

IF EXIST D:\*Backup*\ (
   ECHO "directory exist"
) ELSE (
   ECHO "directory not exist"
)

相关问题