使用批处理脚本检查文件夹中是否存在具有特定文件扩展名的文

时间:2015-01-23 07:38:36

标签: batch-file file-extension file-exists

我想使用批处理脚本检查文件夹中的某个文件扩展名

就像,

if exist <any file with extension .elf>
  do something
else
  do something else

此处文件名可能是任何内容,但只有扩展名(.elf)很重要

2 个答案:

答案 0 :(得分:4)

在最简单的情况下,批处理语言包含此任务的构造

if exist *.elf (
    :: file exists - do something 
) else (
    :: file does not exist - do something else
)

其中if exist将测试当前或指示文件夹中是否存在与指定名称/通配符表达式匹配的元素。

虽然在这种情况下您似乎不需要任何其他内容,但您应该考虑if exist在文件和文件夹之间没有区别。如果您使用的名称/通配符表达式与文件夹名称匹配,则if exists将评估为true。

如何确保我们测试文件?最简单的解决方案是使用dir命令搜索文件(文件夹除外)。如果失败(引发错误级别),则没有符合条件的文件。

dir /a-d *.elf >nul 2>&1 
if errorlevel 1 (
    :: file does not exist - do something
) else (
    :: file exists - do something else
)

或者,使用条件执行(对上面的代码只是略微缩减)

dir /a-d *.elf >nul 2>&1 && (
    :: file does exist - do something
) || ( 
    :: file does not exist - do something else 
)

它的作用是执行搜索dir的{​​{1}}命令,不包括文件夹(*.elf)并将所有输出发送到/a-d设备,即丢弃输出。如果引发了errorlevel,则找不到匹配的文件。

答案 1 :(得分:2)

尽可能简单:

if exist *.elf echo yes