【发布时间】:2019-07-02 06:28:53
【问题描述】:
我正在设置一个批处理文件来解析日志文件中的某个字符串:“多个匹配元素”。当我的服务器上出现问题时,这串单词在日志文件中的一个句子中。我知道java,但我并不真正了解DOS,所以我有点想知道它。无论如何,如果批处理脚本解析文件并找到该字符串,我想我可以使用 IF 语句通过命令提示符在 SQL SERVER 中执行 SQL 语句来解决问题。
话虽如此,我遇到了问题。测试时遇到错误:此时 in() 是意外的。我相信这是由于我的文件可能没有被识别,并且解析还没有开始?我在这个文件夹中有多个文件,同名。这些文件的日期在我的批处理脚本文件路径中的名称之后,如下所示:'JobRunnerLogFile.winservice020619.txt' 今天的当前日志文件具有下面我的文件路径中的确切名称。批处理脚本是否有可能查看确切的名称,或者只是文件的开头?它不知道要打开哪个文件?我下面的语法是否正确地解析了该文本字符串的文件?
@echo off
set %file% = "H:\Program Files (x86)\Test\JobRunnerLogFile.winservice.txt"
for /f "tokens=more than one matching element" %%A in(%file%)
do(echo%%A)
pause
cmd /k
【问题讨论】:
-
喜欢这个? "H:\Program Files (x86)\Test\JobRunnerLogFile.winservice.txt" 还有,set %file% 是否需要设置 file = ?
-
如果您已经在使用 SQL Server 和 Windows,最好看看 Powershell 选项吗?
-
我想它可以,我只知道我们服务器上的许多计划任务现在都运行 .bat 文件,所以我只是想我会这样做。另外,我在这里和那里编辑了一些 .bat 文件,所以我猜感觉有点熟悉。
-
我几乎只是放弃了另一种选择。我会选择您系统中使用的内容以及您喜欢的内容。在大多数情况下,Powershell 基本上是大量类固醇的批处理,但这对于您在这里尝试做的事情可能有点多。 :-)(和 TBH,我可能写了比 PS 更多的批处理代码来做不复杂的事情)
-
几乎唯一正确的语法是
@echo off和pause。您的其余代码看起来像您没有阅读您尝试使用的命令的帮助文件。您可以通过打开 cmd 提示符并键入命令名称后跟正斜杠和问号来阅读命令的帮助。set /?或for /?。TOKENS选项绝对不会像您认为的那样做。
标签: sql-server powershell parsing batch-file scripting