找到第一个命中后停止DIR命令搜索



在CMD.EXE中,我可以使用DIR搜索某些内容-举下面的例子:

DIR C:*EXCEL.EXE /A:-D /B /S

尽管要了解C:\驱动器的整个结构需要一段时间,但第一次匹配相对较快。

问:一旦找到命中,是否有办法自动停止命令继续搜索?

我之所以这么问,是因为我实际上想shell一个cmd提示符,并将StdOut读取到另一个脚本,但如果我等待整个搜索完成,会有很长的停顿。

你不能停止dir,但你可以使用另一种方法:

for /r "c:" %%i in (excel.exe) do (echo -- %%i & goto :eof)

到目前为止,这是我发现的最快的方法。

运行此获取位置。。。(比目录快得多)

where /r %systemdrive% inventor.exe

如果你真的想使用输出,运行这个。。。

where /r %systemdrive% inventor.exe > %userprofile%loctest.txt

然后运行此操作来设置要使用的变量。注意:(如果您手动运行而不是在.bat或.cmd中运行,请记住只使用1%)

for /f "tokens=*" %%G in (%userprofile%loctest.txt) do (set testvar=%%G)

然后,您可以运行echo%testvar%来查看值。。。

以下是命令行中的内容

我来聊天是为了寻找一种方法,将cd复制到一个具有给定部分名称的目录;根据Stephan上面的建议,使用批处理文件似乎对我很有效:cww.bat::

for /D /r "." %%i in (*%1*) do (cd %%~pfxi & goto :eof)