我正在编写一个批处理脚本,用于检查目录中是否存在文本文件。我使用以下命令
if exist "test\dir\*.txt"
(
echo txt file exist
)
好像命令在搜索时没有区分大写和小写,所以我打算使用find命令,但我无法将其与*.txt
一起使用。
有人可以告诉我如何使用find命令搜索未知的文本文件?
答案 0 :(得分:1)
要测试文件是否存在,您可以使用以下任何一种
if exist "test\dir\*.txt" (
echo File exists
) else (
echo File does not exist
)
if exist "test\dir\*.txt" echo File exists
dir /a-d "test\dir\*.txt" > nul 2>nul
if errorlevel 1 (
echo File does not exist
) else echo File exists
dir /a-d "test\dir\*.txt" >nul 2>nul && echo File Exists || echo File does not exist
只是列举习惯性的方式。
但是,正如你所说,所有这些结构都不区分大小写。
find
用于查找文件内的文本,而不是文件搜索。但是,如果搜索必须区分大小写,则必须将先前样本中对文件存在的简单检查转换为文件的枚举,然后在列表中搜索所需文件。
dir /a-d /b "test\dir\*.txt" 2>nul | find ".txt" > nul
if errorlevel 1 (
echo File does not exist
) else echo File exists
但是这将返回myfile.txt.exe
存在的文件。对于这样的事情,findstr
更灵活,允许指示搜索字符串的位置。在这种情况下,在行的末尾
dir /a-d /b "test\dir\*.txt" 2>nul | findstr /l /e /c:".txt" > nul
if errorlevel 1 (
echo File does not exist
) else echo File exists
此枚举与*.txt
匹配的文件,并以小写字母筛选列表(/l
切换).txt
(/c:
参数)的列表(默认行为),在行的末尾(/e
开关)
答案 1 :(得分:0)
dir / s将在给定目录及其子目录中搜索文件模式。执行后检查ERRORLEVEL将允许知道文件是否被找到。