【问题标题】:Find files NOT matching *_abc.*查找不匹配 *_abc.* 的文件
【发布时间】:2013-06-05 19:03:47
【问题描述】:

在 dos 中,当我想获得与特定过滤器匹配的文件列表时,我可以使用以下内容:

  • *.* - 表示一切归还
  • *.txt - 表示返回所有带有.txt 扩展名的文件
  • *_abc.* - 表示返回每个以 _abc 结尾的文件

我的问题是,使用该 dos 过滤器结构,我如何返回所有文件不匹配 *_abc.*(换句话说,返回所有名称不以_abc 结尾的文件)?

我不记得这是否可行,我需要这个,因为与我合作的一家公司正在使用一个非常旧的程序,该程序仍然使用这种形式的命令过滤来选择程序要处理的文件 - 另外,不幸的是,我不能通过批处理命令来做到这一点......它必须是一个单一的命令行语句。

谢谢!!!

【问题讨论】:

    标签: filter wildcard dos


    【解决方案1】:

    使用适当的正则表达式搜索字符串和/V 选项将您的列表结果通过管道传输到 FINDSTR 以过滤掉匹配的行。

    dir /b /a-d * | findstr /v /r "_abc\.[^.]*$"
    

    【讨论】:

    • 不幸的是,该解决方案不起作用,但恐怕它与我正在使用的程序的功能受限有关。不过,我会将您的解决方案标记为答案,因为我确信如果我的程序配备更好,您的解决方案会完成我想要的。谢谢!!
    【解决方案2】:

    看看这个对一个不相关问题的答案。答案确实显示了如何对文件名进行正则表达式搜索,当然,如果您使用正则表达式,您可以轻松搜索与表达式不匹配的内容。

    https://stackoverflow.com/a/7381962/1246574

    希望对您有所帮助。

    编辑

    抱歉,没有看到您需要它是单行语句而不是批处理。我会留下上面的答案,以防万一它对其他人有帮助,我也会看看我是否可以在单个语句中查找如何做到这一点。

    【讨论】:

    • 感谢您的帖子,无论如何,@Jim...感谢您的帮助!
    猜你喜欢
    • 2013-02-21
    • 2013-10-19
    • 2014-02-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多