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

Man*_*nta 3 file-extension batch-file file-exists

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

就像是,

if exist <any file with extension .elf>
  do something
else
  do something else
Run Code Online (Sandbox Code Playgroud)

这里的文件名可以是任何东西,但只有扩展名(.elf)很重要

MC *_* ND 5

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

if exist *.elf (
    :: file exists - do something 
) else (
    :: file does not exist - do something else
)
Run Code Online (Sandbox Code Playgroud)

将在其中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
)
Run Code Online (Sandbox Code Playgroud)

或者,使用条件执行(上述代码略微缩写)

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

它的作用是执行一个dir搜索命令*.elf(不包括文件夹(/a-d)),然后将所有输出发送到nul设备,即丢弃该输出。如果引发错误级别,则找不到匹配的文件。