【问题标题】:check if file with certain file extension present in folder using batch script使用批处理脚本检查文件夹中是否存在具有特定文件扩展名的文件
【发布时间】:2015-03-22 05:00:23
【问题描述】:

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

就像,

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

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

【问题讨论】:

  • 如果应该是这样如果存在*.elf do(文件存在-做某事),你应该使用do关键字

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


【解决方案1】:

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

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 命令搜索*.elf,不包括文件夹(/a-d)并将所有输出发送到nul 设备,即丢弃输出。如果错误级别被提高,则没有找到匹配的文件。

【讨论】:

  • 如果应该是这样如果存在*.elf do(文件确实存在-做某事),你应该使用do关键字
  • @MȍhǟmmǟdȘamȋm,不,不应该。在批处理文件中,for 命令需要do 子句,但if 命令语法不包含do 子句。
  • 如果存在 *.elf do 这对我来说很好,ifdo,没有 在我的情况下它不起作用。
【解决方案2】:

尽可能简单:

if exist *.elf echo yes

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-01-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多