标题: [文本处理] 请问如何做一个简单的命令行窗口,显示指定txt文件中指定的内容 [打印本页]
作者: mexs 时间: 2021-6-26 13:55 标题: 请问如何做一个简单的命令行窗口,显示指定txt文件中指定的内容
调试设备的时候抓log, 如果等到抓完再看,比较麻烦
想要实时能显示出来,方便实时查看设备的CPU温度与占用
需要这个bat能实现读取指定txt文件,然后解析出最后一行的指定内容在 命令窗口显示,间隔10秒刷新一次
TXT中的内容如下, 每次更新需要抓取最后一行的 第二字段,就下下图中最后一行的79%这个位置, 和 最后一行最后一字段86的位置, 一个代表CPU占用率,一个代表温度
1104 79% 0% 1104 73% 0% 1104 73% 0% 1104 72% 0% 1104 69% 0% 1104 100% 0% 0 0% 0% 0 0% 0% 86
1104 79% 0% 1104 70% 1% 1104 82% 1% 1104 72% 1% 1104 77% 0% 1104 94% 0% 0 0% 0% 0 0% 0% 85
1104 82% 0% 1104 74% 0% 1104 73% 0% 1104 72% 0% 1104 69% 0% 1104 100% 0% 0 0% 0% 0 0% 0% 86
1104 83% 0% 1104 73% 0% 1104 75% 0% 1104 75% 1% 1104 75% 1% 1104 100% 0% 0 0% 0% 0 0% 0% 86
1104 77% 1% 1104 67% 0% 1104 68% 1% 1104 71% 1% 1104 71% 0% 1104 100% 0% 0 0% 0% 0 0% 0% 85
1104 79% 0% 1104 73% 1% 1104 75% 0% 1104 75% 0% 1104 67% 1% 1104 100% 0% 0 0% 0% 0 0% 0% 86
1104 70% 1% 1104 59% 0% 1104 71% 0% 1104 63% 0% 1104 83% 0% 1104 100% 0% 0 0% 0% 0 0% 0% 86
1104 79% 2% 1104 69% 1% 1104 62% 0% 1104 62% 1% 1104 83% 1% 1104 100% 0% 0 0% 0% 0 0% 0% 86
作者: idwma 时间: 2021-6-26 15:57
本帖最后由 idwma 于 2021-6-26 15:59 编辑
@echo off
:loop
for /f "tokens=2-26 delims= " %%a in (in.txt) do (
cls
echo cpu: %%a %%x
)
ping -n 2 127.0.0.1>nul
goto :loop
作者: newswan 时间: 2021-6-26 16:20
powershell- $file = "1.txt"
- while ($true)
- {
- cls
- $a = ( get-content $file | Select-Object -last 1 ) -split " +"
- write-host "CPU:" $a[1] $a[-1]
- Start-Sleep -Seconds 10
- }
复制代码
作者: mexs 时间: 2021-6-26 16:23
回复 2# idwma
实测,好像会历遍所有行,因为窗口会一直在变化显示,最后停留在最后一行上, 如果内容较多,需要等待很长时间才会定位到 最后一行向要的内容
不过还是谢谢你
作者: mexs 时间: 2021-6-26 16:49
回复 3# newswan
谢谢, 向通过bat 实现
作者: newswan 时间: 2021-6-26 16:51
本帖最后由 newswan 于 2021-6-26 16:53 编辑
回复 4# mexs
用 linux 的 tail ,只读最后一行复制代码
- for /f "tokens=2-26 delims= " %%a in ('tail -n 1 1.txt') do (
复制代码
作者: mexs 时间: 2021-6-26 17:57
回复 2# idwma
用了一些笨方法,算法是实现了我的要求,先复制,然后提取,在截取显示,
哈哈- @echo off
- title=每5秒刷新一次CPU温度
- mode con cols=40 lines=50&color 0c
- :loop
- COPY temp.txt temp1.txt >nul
- for /f "delims=" %%i in (temp1.txt) do (
- set lastLine=%%~i
- )
- echo %lastLine% >ok.txt
-
- for /f "tokens=2-26 delims= " %%a in (OK.txt) do (
- echo cpu: %%a %%x
- )
-
- del temp1.txt
- del ok.txt
-
- TIMEOUT /T 5 >nul
- goto loop
复制代码
欢迎光临 批处理之家 (http://www.bathome.net/) |
Powered by Discuz! 7.2 |