批处理文件以查找文件并运行程序

时间:2013-01-30 17:59:17

标签: file search batch-file

好吧,我相信我正在用这个推动批处理文件的限制。

我需要一个批处理文件,它会查找文件并找到“X”或“y”。如果找到任何一个,则运行程序。如果两者都找不到,继续使用其余代码。它将查找的文件具有扩展名.inf。它是用记事本打开的。我甚至不确定从哪里开始。任何帮助将不胜感激。 :)

3 个答案:

答案 0 :(得分:2)

您可以使用FINDSTR同时搜索多个条目。像这样使用它:

FINDSTR "term1 term2 term3 ..."

如果找到至少一个术语,结果将会成功。如有必要,使用/I开关使搜索大小写不敏感:

FINDSTR /I "term1 term2 term3 ..."

FINDSTR默认搜索stdin。将输入重定向到.inf文件以使其搜索文件:

FINDSTR /I "term1 term2 term3 ..." <file.inf

或者,您可以将文件名作为另一个参数:

FINDSTR /I "term1 term2 term3 ..." file.inf

在这两种情况下,输出会略有不同,但我知道你实际上并不需要输出,而是搜索的结果,即它是成功还是失败。

要检查结果,您可以使用显式ERRORLEVEL测试,如下所示:

FINDSTR /I "term1 term2 term3 ..." file.inf
IF NOT ERRORLEVEL 1 yourprogram.exe

另一种语法是使用ERRORLEVEL 系统变量,这可能比前者更直接:

IF %ERRORLEVEL% == 0 yourprogram.exe

另一种方法是使用&&运算符。此方法ERRORLEVELFINDSTR测试,但ERRORLEVEL &&测试和&&的工作方式相同,在这种情况下FINDSTR /I "term1 term2 term3 ..." file.inf && yourprogram.exe 方法的优点是更简洁:

FINDSTR

这几乎就是这样。最后要注意的是,由于您可能实际上对NUL的输出不感兴趣,因此您可能希望通过将其重定向到FINDSTR /I "term1 term2 term3 ..." file.inf >NUL && yourprogram.exe 来抑制它,如下所示:

{{1}}

答案 1 :(得分:0)

尝试从此页面开始:

http://www.robvanderwoude.com/findstr.php

然后有关批处理文件基础知识的进一步参考:

http://www.robvanderwoude.com/batchfiles.php

答案 2 :(得分:0)

FIND和FC的组合可以做到。

@echo off
REM try to find X
FIND /c "X" file.inf >test_isxfound.txt
REM what does it look like when I don't find a match
FIND /c "th1s$tringb3tt3rn0tbeinthisfile" file.inf >test_xnotfound.txt
REM then compare those results with the results where we know it wasn't found
FC test_xnotfound.txt test_isxfound.txt
REM then check to see if FC saw a difference
IF ERRORLEVEL 1 goto xisfound

ECHO *** X is not found
goto end
:xisfound
ECHO *** X is found
goto end
:end
del test_xnotfound.txt
del test_isxfound.txt