标题: [文件操作] 批处理如何从服务器搜索内容包含某字符串,并生成TXT文件记录该字符串出现的次数 [打印本页]
作者: bat.start 时间: 2022-5-13 22:30 标题: 批处理如何从服务器搜索内容包含某字符串,并生成TXT文件记录该字符串出现的次数
1
各位老师:
如何从服务器的文件夹中的TXT文档搜索包含特定字符串(有几组,如loading fail 和HF fail或者其他,自己可以定义的),并将该关键字出现的次数记录到新的TXT文件中,因为TXT里面是按照时间每行每行记录信息的,最好是能自己输入时间来按照时间段来搜索并记录次数。例如:
服务器地址:
\\192.168.11.123\pool\test123\p01-1 (注:在p01-1文件夹下有很多TXT文件,txt 文件里面都是按照时间每行每行记录的,)
需求:按照自己输入的时间 :年-月-日 -时-分在p01-1中搜索关键字如loading fail 并在指定路径(如D\123\下)生成一个新TXT文件来记录出现这个关键字的次数。
万分感谢!
作者: flashercs 时间: 2022-5-13 23:44
- @echo off
- cd /d "%~dp0"
- set rootdir=\\192.168.11.123\pool\test123\p01-1
- set outfile="搜索结果.txt"
- :loop
- set dtm=
- set str=
- set /p dtm=输入时间:
- if not defined dtm goto end
- set /p str=输入搜索字符串:
- if not defined str goto end
- findstr /ilbc:"%dtm%" "%rootdir%\*.txt"|find /i /c "%str%">>%outfile%
- goto loop
-
- :end
- exit /b
复制代码
作者: Batcher 时间: 2022-5-14 09:57
回复 2# flashercs
代码实现的应该不是楼主的真实需求,因为他要求:
按照时间段来搜索并记录次数
文件里面都是按照时间每行每行记录的
作者: Batcher 时间: 2022-5-14 09:57
回复 1# bat.start
请给出几行真实数据,并举例说明需要获取哪一部分信息。
如果需要上传文件,可以用阿里云盘或百度网盘。
如果需要上传截图,可以找个图床,例如:
http://bbs.bathome.net/thread-60985-1-1.html
作者: bat.start 时间: 2022-5-15 20:04
回复 bat.start
请给出几行真实数据,并举例说明需要获取哪一部分信息。
如果需要上传文件,可以用 ...
Batcher 发表于 2022-5-14 09:57
老师好,如第一张图片就是文件夹下面的TXT文件,第二张图片就是TXT文件里面的内容。需要自己输入日期,键入关键字如ALARM,然后就可以按照输入的日期来查找关键字,然后关键字出现的次数计数,输出到指定路径下的新TXT文档里。
作者: bat.start 时间: 2022-5-15 20:07
老师好,如第一张图片就是文件夹下面的TXT文件,第二张图片就是TXT文件里面的内容。需要自己输入 ...
bat.start 发表于 2022-5-15 20:04
最好是能自己输入一个时间区间,然后查找。如1/7/2022 06:36到1/8/2022 06:36
作者: bat.start 时间: 2022-5-15 20:07
回复 4# Batcher
帮忙指导下。感谢老师
作者: bat.start 时间: 2022-5-15 20:08
回复 2# flashercs
帮忙指导下,谢谢老师
作者: flashercs 时间: 2022-5-16 13:55
- <#*,:&cls
- @echo off
- cd /d "%~dp0"
- powershell -C "Set-Location -LiteralPath ([Environment]::CurrentDirectory);. ([ScriptBlock]::Create((Get-Content -LiteralPath \"%~f0\" -ReadCount 0 | Out-String)))"
- pause
- exit /b
- #>
- # 功能:按时间搜索指定目录下txt文档中的字符串,按ctrl+c退出
- $rootdir = "\\192.168.11.123\pool\test123\p01-1"
-
- $outfile = "搜索结果.log"
-
- $arrPso = foreach ($arrLines in Get-Content -ReadCount 0 -Path "$rootdir\*.txt" -Filter *.txt -ErrorAction SilentlyContinue) {
- foreach ($line in $arrLines) {
- $sDate, $sTime, $sText = $line -split '\s+', 3
- ($pso = New-Object psobject -Property @{
- Date = [datetime]"$sDate $sTime"
- Text = $sText
- })
- }
- }
- $Host.UI.RawUI.WindowTitle = "按 Ctrl+C 退出"
- # exit
- while ($true) {
- do {
- $startTime = $null
- $startTime = (Read-Host -Prompt 请输入起始时间) -as [datetime]
- } while ($null -eq $startTime)
- do {
- $endTime = $null
- $endTime = (Read-Host -Prompt 请输入结束时间) -as [datetime]
- } while ($null -eq $endTime)
- $strSearch = Read-Host -Prompt 请输入查找字符串
- $alResult = $null
- $arrPso | Where-Object { $_.Date -ge $startTime -and $_.Date -lt $endTime -and $_.Text.Contains($strSearch) } -OutVariable alResult | Format-Table -AutoSize
- "$startTime $endTime $strSearch $($alResult.Count)" | Add-Content -LiteralPath $outfile
- }
复制代码
欢迎光临 批处理之家 (http://www.bathome.net/) |
Powered by Discuz! 7.2 |