BAT脚本在目录中搜索与输入名称匹配的文件夹

时间:2012-04-17 08:48:45

标签: search batch-file directory exists

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

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

如果它有所不同,该目录在存储库中,所以为了我的目的,我将使用'svn list',但我认为一个很好的通用解决方案对每个人都会很好。

1 个答案:

答案 0 :(得分:2)

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

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%

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