windows - 使批处理文件 FOR 命令在没有通配符的情况下工作?

标签 windows batch-file for-loop cmd

我见过如何使用批处理文件遍历目录并处理与通配符表达式匹配的各种文件的示例,例如:

FOR %%f IN (*.ext) DO (
    ECHO Found ext file %cd%\%%f
)

以上将仅匹配当前目录中以 .ext 结尾的文件。但是,如果我只想匹配一个确切的文件名,如果它存在于该目录中怎么办?我想要这样的东西:

FOR %%f IN (someFile.ext) DO (
    ECHO Found our file name in %cd%
)

但是这似乎不起作用; FOR 命令将“somefile.ext”解释为一个字符串,并且总是运行一次 FOR 循环。我如何尝试匹配当前目录中没有通配符的确切文件名?

最佳答案

Windows 需要一个“通配符”表达式来使 FOR 循环按预期运行。因此,您可以提供这样的表达式,同时可能通过通配符匹配额外的文件,并使用额外的 IF 语句将它们过滤掉:

FOR %%f IN (somefile.ext*) DO (
    IF /I "%%f"=="somefile.ext" (
        ECHO Found somefile.ext in
        ECHO dir: %cd%
        ECHO.
    )
)

... 或者首先使用 IF 语句来检查文件是否存在:

IF EXIST somefile.ext (
    ECHO Found somefile.ext in
    ECHO dir: %cd%
    ECHO.
)

关于windows - 使批处理文件 FOR 命令在没有通配符的情况下工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32722412/

相关文章:

java - 如何阻止cmd.bat关闭——java jar应用程序

windows - 在不覆盖现有文件的情况下运行 xcopy 的批处理文件

java - Java中如何替换不同类中不同字段的相似代码?

javascript - 在 for 循环中输出 javascript 数组值会导致未定义

c++ - 错误: 'make_array' 不是 'boost::serialization 的成员

c# - 在 C# 中以编程方式创建无线接入点

android - Windows Batch - 通过变量传递空间以在 ADB 命令中使用

windows - Docker Toolbox Windows登录quay.io

php - 有没有办法用 php.exe 和友好的 GUI 运行 php 文件?

python - 包含 if 语句和 for 循环的单个语句