【问题标题】:BAT script to search directory for folders that match an input nameBAT 脚本在目录中搜索与输入名称匹配的文件夹
【发布时间】:2012-04-28 14:26:58
【问题描述】:

不确定编写 bat 脚本以获取名称输入并搜索目录以查看其是否存在的最佳(或更好)方法是什么。

在运行比较之前,我需要先将目录列表输出到文件吗?

如果它有所作为,该目录位于存储库中,因此出于我的目的,我将使用“svn list”,但我认为适合每个人的一个很好的通用解决方案会很好。

【问题讨论】:

    标签: search batch-file directory exists


    【解决方案1】:

    如果您正在测试目录中的特定名称,那么您通常会执行以下操作:

    if exist name (echo found it) else (echo not found)
    

    或者如果名称不完整

    if exist *name* (echo found it) else (echo not found)
    

    如果您在目录树中的任何位置测试名称,那么我会使用

    dir /s /a-d *name* >nul && (echo found it) || (echo not found)
    

    如果您正在发出一个生成输出行的命令,并且您想测试一个名称是否存在于任何一行中,那么 Windows 管道通常可以正常工作,只要输出的大小不是很大并且第二半可以跟上上半场。

    yourCommand | find "name" >nul && (echo found it) || (echo not found)
    

    但是如果第二部分比第一部分慢,管道就会变得低效,并且必须缓冲大量数据。在这种情况下,使用临时文件而不是管道肯定会更好。我在临时文件名中加入了一个随机数,以防止使用同一临时目录的多个进程可能发生冲突。

    set tempFile="%temp%\myTempFileBaseName%random%.txt"
    yourCommand >%tempFile%
    <%tempFile% find "name" >nul && (echo found it) || (echo not found)
    del %tempFile%
    

    我通常使用管道,除非我知道自己有性能问题。

    【讨论】:

    • 谢谢!但我在使用时收到“此时出现其他意外”错误...dir /on /b /a:d C:\projects | find test >nul && (echo found it) else (echo not found)
    猜你喜欢
    • 1970-01-01
    • 2015-11-26
    • 1970-01-01
    • 1970-01-01
    • 2012-10-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-07-29
    相关资源
    最近更新 更多