Windows 基于搜索字符串的批处理脚本迭代
我有一个带有Oracle查询的Windows 基于搜索字符串的批处理脚本迭代,windows,batch-file,oracle11g,findstr,Windows,Batch File,Oracle11g,Findstr,我有一个带有Oracle查询的Program2.bat,它生成一个文件log.txt,其内容结构如下: SQL> SELECT SID, SERIAL#, STATUS, USERNAME, LOGON_TIME FROM GV$SESSION WHERE USERNAME = 'DBADMIN' and status in ('ACTIVE','INACTIVE','KILLED') ; no rows selected SQL> spool off; 或者说: SQL>
Program2.bat
,它生成一个文件log.txt
,其内容结构如下:
SQL> SELECT SID, SERIAL#, STATUS, USERNAME, LOGON_TIME FROM GV$SESSION WHERE USERNAME = 'DBADMIN' and status in ('ACTIVE','INACTIVE','KILLED') ;
no rows selected
SQL> spool off;
或者说:
SQL> SELECT SID, SERIAL#, STATUS, USERNAME, LOGON_TIME FROM GV$SESSION WHERE USERNAME = 'DBADMIN' and status in ('ACTIVE','INACTIVE','KILLED') ;
SID SERIAL# STATUS USERNAME LOGON_TI
---------- ---------- ---------- ---------- -------------
2388 54 Active DBADMIN 28-FEB-14
2391 37 Active DBADMIN 17-FEB-14
2395 111 Inactive DBADMIN 28-FEB-14
2780 325 Killed DBADMIN 26-FEB-14
2790 111 Killed DBADMIN 8-FEB-14
5 rows selected.
SQL> spool off
我正在努力实现以下目标:
- 操作1:调用Program2.bat,它将生成log.txt
- 操作2:在log.txt中搜索字符串“未选择行”
- 操作3:如果找到字符串,则调用program1.bat
- 操作4:如果未找到字符串,请执行以下操作:
- 再次调用program2.bat并重试
- 每隔5分钟再次执行操作2(意味着每隔5分钟在log.txt中继续搜索字符串“no rows selected”,直到找到字符串“no rows selected”)
如何在上述脚本中实现行动4的第2点,或者我们是否有其他方法以最简单的方式实现所有目标?我不理解这个问题?您正在使用sqlplus吗?我想这就是你们需要的。@Alexander.我正在使用Oracle数据库,现在我已经添加了更多有问题的信息。
@echo off
setlocal
Call Program2.bat
>nul findstr /c:"no rows selected" log.txt && (
call program1.bat
) || (
call program2.bat
)