【问题标题】:Batch script to list files in directory given by file extension列出文件扩展名给出的目录中的文件的批处理脚本
【发布时间】:2021-12-10 09:18:56
【问题描述】:

我想写一个简单的行来列出具有给定扩展名的文件夹中的所有文件。这是我尝试过的:

FOR %I IN (.\*) DO IF %~NXI == *.asm  @ECHO %~I

不幸的是,这不起作用!

问题似乎与* 通配符有关,因为当更改为:

FOR %I IN (.\*) DO IF %~NXI == r_draw16.asm  @ECHO %~I

它确实有效 - 按预期输出 .\r_draw16.asm

我的问题是为什么使用通配符的解决方案不起作用并且需要纠正它来完成这项工作?

【问题讨论】:

  • 既然您正在寻找asm 文件,为什么不直接使用扩展名呢? FOR %I IN (.\*) DO @IF /I "%~xI" == ".asm" ECHO %~I。在批处理文件中,您必须将% 字符加倍,即@FOR %%I IN (.\*) DO @IF /I "%%~xI" == ".asm" ECHO %%~I。然而,使用@FOR %%I IN (.\*.asm) DO @ECHO %%~I 会更简单。如果您打开命令提示符窗口,输入 for /? 并按下 [ENTER] 键,您应该会看到所有可用的修饰符。
  • IF 比较是字符串文字,除非您比较的是整数。没有任何形式的正则表达式可以与IF 命令进行比较。 FINDSTR 命令确实具有有限的正则表达式功能。
  • dir *.asm /A-D /B 怎么样?打开command prompt,运行dir /? 并阅读输出帮助。最好运行一次 for /?if /?echo /? 以及命令 help 以显示Windows commands 的(不完整)列表,也由SS64.com - A-Z index of Windows CMD commands 解释。

标签: windows batch-file


【解决方案1】:

你可以试试这个:

@echo off
for %%I in (*.asm) do echo %%I

【讨论】:

    猜你喜欢
    • 2016-08-02
    • 1970-01-01
    • 2018-09-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-08-08
    • 1970-01-01
    • 2014-06-16
    相关资源
    最近更新 更多