batch-file - 批处理脚本读取日志文件的最后两行
问题描述
我想阅读日志文件的最后两行,下面的代码正在打印所有行
@echo on
setlocal EnableDelayedExpansion
for /f "delims=" %%x in (C:\FICO\test_script\retcodeStartClientKYC.txt) do (
set "previous=!last!"
set "last=%%x"
)
echo !previous!
set var1=%previous%
set var2=%var1:*:=%
echo %var2% >> result1.txt
谁能告诉我上面的代码有什么问题。
解决方案
我应该建议,如果您的批次与您发布的完全一样,我毫不怀疑您会遇到麻烦。
这是我重新格式化的版本:
@echo off
setlocal EnableDelayedExpansion
rem for /f "delims=" %%x in (C:\FICO\test_script\retcodeStartClientKYC.txt) do (
for /f "delims=" %%x in (q65761009.txt) do (
set "previous=!last!"
set "last=%%x"
)
echo !previous!
set "var1=%last%"
set "var2=%var1:*:=%"
echo %var2%
GOTO :EOF
注意:您没有显示日志文件中的任何示例(如果已审查)源数据。我使用了一个随机文本样本,放入一个q65761009.txt
适合我系统的名为的文件中。
现在 - 使用代码,复制/粘贴并根据需要.bat
使用适当的文本编辑器编辑到文件中,如Editplus
或Notepad++
(以及其他) - 在紧要关头,使用Notepad
但要注意批处理对布局非常敏感并且Notepad
有一个可怕的习惯保存时尝试重新格式化。以 ANSI 格式保存,而不是 Unicode。
不幸的是,您的操纵无法解释。正如您编写的那样,它似乎是echo
倒数第二行,然后删除倒数第二行中第一个冒号之前的所有文本,然后echo
对剩余部分进行 ing。
由于您没有表现出对结果的期望,我们无法确定您的意图;但最后一个似乎是可疑的。水晶球告诉我您打算使用echo
倒数第二行 ( previous
) 和最后一行的第一个冒号之后的部分,所以我修改了代码来做到这一点。
提示:set "var1=data"
用于设置值 - 这可以避免尾随空格引起的问题。
由于您显然是在扩展文件,因此您可以>>filename
在每个适当的echo
. 或者您可能想重新创建一个文件——只包含两个echo
语句产生的数据;你不说...
但是 - 我发现上面的代码按照(我)的预期生成了两行(到控制台),并且文件中没有任何先前数据的迹象。
推荐阅读
- java - 我可以创建 apk 来发送命令或活动吗?
- javascript - React App ,人脸识别 API 运行正确但不显示任何图像
- ios - 将点击手势添加到插座集合
- json - 如何正确构造/传递 Highcharts.js 系列图表的数据?
- python - Jupyter Notebook 输出仅归档一半屏幕
- java - 使用文本、图像和声音对 ListView 进行排序
- function - 如何在 Azure App Functions 中确定 TraceWriter 对象的范围,使其可用于所有方法
- php - imagick:绘制 html 输出
- python - 在继续执行剩余代码之前检查所有文件是否都在目录中?
- bash - 为什么在这里“读取”与未引用的此处字符串一起使用时会错误地填充数组?