1

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

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

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

4

1 回答 1

3

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

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%

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

于 2012-04-17T11:45:42.893 回答