我的文件文件与我的批处理文件所在的文件夹相同。
所以我希望我的批处理文件读取文本文件的内容,并根据该文本文件的内容,我希望它执行操作。
例如,如果文本文件包含“Hello World”,那么就像启动VLC一样 如果它不包含Hello World,那么就做其他事情。
文本将自行更新。
这是我的批处理代码到目前为止,它可以在屏幕上输出文本文件中的文本。
@echo off
for /f "tokens=*" %%a in (log.txt) do call :processline %%a
pause
goto :eof
:processline
echo line=%*
goto :eof
:eof
答案 0 :(得分:31)
您应该使用FIND或FINDSTR。从命令提示符处键入HELP FIND
和HELP FINDSTR
以获取文档。 FIND非常简单可靠。 FINDSTR更强大,但也很温和。有关详细信息,请参阅What are the undocumented features and limitations of the Windows FINDSTR command?。
您不关心任何一个命令的输出,因此您可以将输出重定向到nul。
如果找到字符串,则两个命令都将ERRORLEVEL设置为0;如果找不到字符串,则将命令设置为1。您可以使用&&
和||
运算符有条件地执行代码,具体取决于是否找到字符串。
>nul find "Hello World" log.txt && (
echo "Hello World" was found.
) || (
echo "Hello World" was NOT found.
)
>nul findstr /c:"Hello World" log.txt && (
echo "Hello World" was found.
) || (
echo "Hello World" was NOT found.
)
你也可以在IF语句中测试ERRORLEVEL,但我更喜欢上面的语法。
答案 1 :(得分:0)
这是另一种可行的方法。该代码使用findstr指令在文本文件中查找并查找特定的字符串……返回错误级别0(如果找到)或错误级别1(如果没有找到字符串)。
findstr /m "Findme" Log.txt >Nul
if %errorlevel%==0 (
echo "Findme" was found within the Log.txt file!
)
if %errorlevel%==1 (
echo "Findme" wasn't found within the Log.txt file!
)
pause