DOS:找到一个字符串,如果找到则运行另一个脚本

时间:2010-01-06 00:46:46

标签: batch-file dos

我想使用DOS在文件中找到一个字符串:

例如

  

找到“string”status.txt

当找到它时,我想运行一个批处理文件。

这样做的最佳方式是什么?

5 个答案:

答案 0 :(得分:28)

自从我对批处理文件做了一些事情以来,已经有一段时间了,但我认为以下是有效的:

find /c "string" file
if %errorlevel% equ 1 goto notfound
echo found
goto done
:notfound
echo notfound
goto done
:done

这确实是一个概念证明;清理,因为它符合您的需求。关键是如果find不在errorlevel1会返回string file notfound。在这种情况下,我们会转到found,否则我们会处理{{1}}案例。

答案 1 :(得分:10)

C:\test>find /c "string" file | find ": 0" 1>nul && echo "execute command here"

答案 2 :(得分:7)

我们有两个命令,第一个是“condition_command”,第二个是“result_command”。 如果我们需要在“condition_command”成功时运行“result_command”(errorlevel = 0):

condition_command && result_command

如果我们需要在“condition_command”失败时运行“result_command”:

condition_command || result_command

因此,如果我们在“status.txt”文件中有“string”,则运行“some_command”:

find "string" status.txt 1>nul && some_command

如果我们在“status.txt”文件中没有“string”:

find "string" status.txt 1>nul || some_command

答案 3 :(得分:6)

由于答案标记正确,因此它是一个Windows Dos提示脚本,这也将起作用:

find "string" status.txt >nul && call "my batch file.bat"

答案 4 :(得分:5)

@echo off
cls
MD %homedrive%\TEMPBBDVD\
CLS
TIMEOUT /T 1 >NUL
CLS
systeminfo >%homedrive%\TEMPBBDVD\info.txt
cls
timeout /t 3 >nul
cls
find "x64-based PC" %homedrive%\TEMPBBDVD\info.txt >nul
if %errorlevel% equ 1 goto 32bitsok
goto 64bitsok
cls

:commandlineerror
cls
echo error, command failed or you not are using windows OS.
pause >nul
cls
exit

:64bitsok
cls
echo done, system of 64 bits
pause >nul
cls
del /q /f %homedrive%\TEMPBBDVD\info.txt >nul
cls
timeout /t 1 >nul
cls
RD %homedrive%\TEMPBBDVD\ >nul
cls
exit

:32bitsok
cls
echo done, system of 32 bits
pause >nul
cls
del /q /f %homedrive%\TEMPBBDVD\info.txt >nul
cls
timeout /t 1 >nul
cls
RD %homedrive%\TEMPBBDVD\ >nul
cls
exit