2012-04-17 38 views
1

不确定什么是最好的(或更好的)写入bat脚本以获取名称输入并搜索目录以查看它是否存在的方法。BAT脚本搜索目录以查找与输入名称匹配的文件夹

我需要输出的目录列表保存到文件首先运行一个比较之前?

,如果它的确与众不同,该目录是一个仓库,所以我的目的,我将使用“SVN列表”,但我想给大家一个很好的通用解决方案将是很好。

回答

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% 

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

+0

谢谢!但是当使用...'dir/on/b/a:d C:\ projects'时,我得到一个“其他的在这个时候是意外的”错误。找到测试> nul &&(回声发现它)其他(回波未找到) – user1229895 2012-04-18 02:44:08

+0

糟糕 - 我的部分愚蠢的错误 - 现在修复 – dbenham 2012-04-18 02:47:23

+0

谢谢dbenham ;-) – user1229895 2012-04-18 04:33:56

相关问题