我想使用DOS在文件中找到一个字符串:
例如
找到“string”status.txt
当找到它时,我想运行一个批处理文件。
这样做的最佳方式是什么?
答案 0 :(得分:28)
自从我对批处理文件做了一些事情以来,已经有一段时间了,但我认为以下是有效的:
find /c "string" file
if %errorlevel% equ 1 goto notfound
echo found
goto done
:notfound
echo notfound
goto done
:done
这确实是一个概念证明;清理,因为它符合您的需求。关键是如果find
不在errorlevel
,1
会返回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