Logging .bat-查询最近的日志文件findstr,然后将该文件的文本复制到剪贴板

Logging .bat-查询最近的日志文件findstr,然后将该文件的文本复制到剪贴板,logging,batch-file,findstr,Logging,Batch File,Findstr,因此,我经常需要检查多台服务器的备份日志,然后将日志复制并粘贴到数据库中。我正在尝试编写一个.bat来查找最新的日志文件,执行FINDSTR以查看备份是否成功,然后,如果成功,将日志文件的文本复制到剪贴板(如果可能的话)。除了剪贴板部分之外,我已经把所有的内容都散列出来了,但是它并没有按照我想要的方式工作 需要一点信息- 每个日志都保存到服务器的D:驱动器中。这些日志都使用以下约定命名:BKdate Backup Set.txt-示例-BK0901-001.txt 该目录中还有其他文件,它们的命

因此,我经常需要检查多台服务器的备份日志,然后将日志复制并粘贴到数据库中。我正在尝试编写一个.bat来查找最新的日志文件,执行FINDSTR以查看备份是否成功,然后,如果成功,将日志文件的文本复制到剪贴板(如果可能的话)。除了剪贴板部分之外,我已经把所有的内容都散列出来了,但是它并没有按照我想要的方式工作

需要一点信息-

每个日志都保存到服务器的D:驱动器中。这些日志都使用以下约定命名:BKdate Backup Set.txt-示例-BK0901-001.txt

该目录中还有其他文件,它们的命名也采用相同的约定,除了VY前缀,否则它们将具有不同的扩展名,例如.xml文件-我需要避免使用除BK和所有其他扩展名之外的任何前缀的文件

@echo off
cd\
cls
set /p busrv=Server? 
FOR /F "delims=|" %%I IN ('DIR "\\%busrv%\d$\logs\UltraBac\BK*.txt" /B /O:D') DO findstr /I /C:"Completed Without Errors or Warnings."
IF %errorlevel%==0 (COPY TO CLIPBOARD) echo BACKUPS PASSED
IF %errorlevel%==1 echo BACKUPS NOT PASSED
pause

如果找到该信息,则它将位于剪贴板上,否则剪贴板将不会更改。它没有经过测试:

@echo off
cls
set /p "busrv=Server? "
pushd "\\%busrv%\d$\logs\UltraBac\"
FOR /F "delims=" %%I IN ('DIR "bk*-*.txt" /B /O:D') DO set "file=%%I"
findstr /I /C:"Completed Without Errors or Warnings." "%file%" |clip
popd
pause

还有一点,使用/o-d可以获得最旧的文件,而不是最新的文件。搜索模式可以是dir bk*-*.txt。@endro感谢您的更正。Clip.exe在Vista和更高版本中,但我不确定OP使用的是什么。