标题: [文本处理] 批处理如何判断文件变化后输出到控制台? [打印本页]
作者: 帝尊 时间: 2022-3-23 10:42 标题: 批处理如何判断文件变化后输出到控制台?
有一个文本在一直在写入。
是否可以根据MD5或者文件修改时间进行对比。
有变化就输出。没变化就继续对比。
作者: Batcher 时间: 2022-3-23 11:30
回复 1# 帝尊
把变化后的文本内容输出到控制台吗?
是不是类似于Linux的tail命令,或者试试BareTail这个软件?
作者: 帝尊 时间: 2022-3-23 14:21
回复 帝尊
把变化后的文本内容输出到控制台吗?
是不是类似于Linux的tail命令,或者试试BareTail这 ...
Batcher 发表于 2022-3-23 11:30
就是最后一个echo %%i
第一步就是把把一个文本所有内容输出到控制台。
然后获得这个文本的MD5
有一个程序会对这个文本进行修改。
批处理检测到MD5变化后,再把这个文本重新输出到控制台。就这么个东西。
虽然反复刷新清屏也能获得这个效果。
但是我想弄一个MD5检测的方式。- if defined md5 (
- if not "%md5%" == "%md5New%" (
- for /f "skip=1 tokens=1,* delims=" %%i in (%nnn%) do echo %%i & set "%md5New%" = "%md5%"
- FIND /I "Pass" %nnn% >nul 2>nul
- IF "%ERRORLEVEL%"=="0" (
- for /f "skip=1 tokens=1,* delims=" %%i in (%nnn%) do echo %%i
- pause
- exit
- ) else (
- Goto :check
- )
- )
复制代码
大佬帮我写一个呗?
让我学学。谢谢了。
作者: idwma 时间: 2022-3-23 15:20
尝试一下用事件来实现- #@&cls&powershell "type %~s0|out-string|iex"&pause&exit
- $f=gi 'qwer.txt'
- $d=$f.DirectoryName
- $fsw = New-Object IO.FileSystemWatcher $d -Property @{
- IncludeSubdirectories = 1
- EnableRaisingEvents = 1
- }
- Register-ObjectEvent $fsw -EventName Changed -Action {
- $fp=$event.SourceEventArgs.FullPath
- if($fp -eq $f.fullname){cls;gc $f.fullname|write-host}
- }
- cls
- while(1){
- Wait-Event -Timeout 1
- }
复制代码
作者: Batcher 时间: 2022-3-23 18:10
回复 3# 帝尊
推荐试试命令行工具 tail.exe 作用和Linux的tail命令一样:
http://bcn.bathome.net/s/tool/index.html?key=tail复制代码
作者: 帝尊 时间: 2022-3-24 00:15
回复 5# Batcher
试了一下。tail.exe -f -n 100 "P.txt" 我想第一行不显示,但是这个命令好像没这个功能。
而且我比较喜欢默认的CMD。第三方的还是不用了。谢谢了。
作者: Batcher 时间: 2022-3-25 08:51
回复 6# 帝尊
每隔一段时间就会有人冒出来一个跟你差不多的想法,遗憾的是Windows的CMD没有自带这样的命令。
欢迎光临 批处理之家 (http://www.bathome.net/) |
Powered by Discuz! 7.2 |