私は奇妙な状況にあり、何が悪いのかわかりません
ディレクトリにパターンのあるファイルが少なくとも1つ存在するかどうかを確認する必要があります。
IF EXIST d:\*Backup*.* (
ECHO "file exist"
) ELSE (
ECHO "file not exist"
)
D:\の場合、ファイルがありますx_Backup.txt
とフォルダBackup
取得しますfile exist
しかし、フォルダがある場合はBackup
再び取得しますfile exist
、パスからのドットは無視されているようです。
ドキュメント化されていないワイルドカードがあり、これを使用してこれを実現することもできます。
IF EXIST "D:\*Backup*.<" (
ECHO "file exist"
) ELSE (
ECHO "file not exist"
)
このワイルドカードオプションとその他のオプションについては、次の2つのリンクで詳しく説明されています。 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
これを使って;特定のパターンで動作します:
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"
)
これは別の方法です。
dir d:\*back*.* /b /a-d >nul 2>&1
if errorlevel 1 echo files exist
*.*
は、DOSでは*
と同等です。それは単に「何でも」を意味し、何でも、何も、何も意味しません。
ディレクトリを確認するには、次のことを試してください。
IF EXIST D:\*Backup*\ (
ECHO "directory exist"
) ELSE (
ECHO "directory not exist"
)