我正在尝试创建一个批处理文件,它遍历文件夹中的每个文本文件,并在每行中查找特定的单词,如"msg“、" file”、"size“。如果找到了这些单词,它就会给我发一封电子邮件。
我使用SQL server发送电子邮件,并从我的批处理文件中调用电子邮件存储过程,如下所示:
set MYDB= yourDBname
set MYUSER=youruser
set MYPASSWORD=yourpassword
set MYSERVER=yourservername
sqlcmd -S %MYSERVER% -d %MYDB% -U %MYUSER% -P %MYPASSWORD% -h -1 -s "," -W -Q "exec yourstoredprocedure"
我只需要帮助编写脚本,检查每个.txt文件中每行的特定单词
发布于 2018-01-30 23:33:26
试一试这个批处理文件:
@echo off
Title Search String into text files
Set "ROOT=%~dp0"
set "String2Search=msg size file"
For %%a in (%String2Search%) do (
FOR /f "delims=" %%f IN ('dir /b /s "%ROOT%\*.txt"') DO (
(find /I "%%a" "%%f" >nul 2>&1) && ( Call :FoundString "%%a" "%%f" ) || ( Call :NoFound "%%a" "%%f" )
)
)
pause & exit
::*************
:FoundString
echo found %1 on file %2
goto :eof
::*************
:NoFound
echo no string like %1 found on file %2
goto :eof
::*************
发布于 2018-01-30 23:43:29
我没有什么建议,因为我不能评论。几年前我做了一个项目,我必须搜索具有特定扩展名的文件,并读取它们以找到特定的单词并对它们做一些操作。我只记得很少的事情。我希望它能对你有所帮助。要查找所有txt文件:
find /home/user/Downloads/etc -name '*txt'
读取整个文件并搜索"msg“" file”"size":
while read -r LINE
do
grep -i "msg" | grep -i "file" | grep -i "size"
要在一行中检查所有内容,也可以逐个执行,而不使用“流水线”。附言:我没有安装linux,否则我会在posting.Sorry之前检查是否正确。
发布于 2018-01-30 23:45:52
这应该可以完成这项工作:
@ECHO OFF
CD C:\wherever\your\.txt\files\are\at
FOR /R %%G IN ("*.txt") DO (FINDSTR /I /C:"msg" /C:"file" /C:"size" "%%G" >nul && GOTO match_found)
GOTO no_match
:match_found
ECHO Match found^!
set MYDB= yourDBname
set MYUSER=youruser
set MYPASSWORD=yourpassword
set MYSERVER=yourservername
sqlcmd -S %MYSERVER% -d %MYDB% -U %MYUSER% -P %MYPASSWORD% -h -1 -s "," -W -Q "exec yourstoredprocedure"
:no_match
ECHO No match found^!
PAUSE
如果批处理文件与.txt
文件在同一文件夹中,则可以删除CD
行。
如果搜索应该区分大小写,请删除/I
选项。
https://stackoverflow.com/questions/48531746
复制相似问题