如何避免批处理文件生成的日志重复,实现同设备记录自动更新?
开机设备信息采集去重脚本
原有脚本直接追加写入的逻辑会导致同一设备多次开机产生重复日志条目,以下优化版本实现「自动删除当前设备旧记录、仅保留最新采集数据」的需求:
优化后完整脚本
@echo off :: 自动创建本地临时目录,避免目录不存在导致执行报错 if not exist C:\Temp md C:\Temp :: 采集当前设备Windows版本信息 ver > C:\Temp\TempVersionFile.txt FOR /f "tokens=4 delims=] " %%a IN (C:\Temp\TempVersionFile.txt) DO set WIN_VER=%%a :: 配置日志路径 set "SHARE_LOG=\\mypath\myfile.txt" set "TMP_FILTER=C:\Temp\TmpLogFilter.txt" :: 过滤日志中当前设备的历史记录 if exist "%SHARE_LOG%" ( :: 排除所有行首为当前计算机名的旧条目,其余内容写入临时文件 findstr /v /b /c:"%COMPUTERNAME%;" "%SHARE_LOG%" > "%TMP_FILTER%" :: 用过滤后的内容替换原日志文件 move /y "%TMP_FILTER%" "%SHARE_LOG%" >nul ) :: 写入最新采集的设备信息 echo %COMPUTERNAME%;%DATE%;%TIME%;%WIN_VER% >> "%SHARE_LOG%" :: 清理所有本地临时文件 del C:\Temp\TempVersionFile.txt if exist "%TMP_FILTER%" del "%TMP_FILTER%" exit
关键逻辑说明
- 匹配规则采用
行首匹配计算机名+分号的模式,不会误删其他设备的记录,也不会因为计算机名前缀相似(比如PC-001和PC-0011)出现误删问题 - 新增了临时目录自动创建逻辑,避免系统默认没有
C:\Temp目录时脚本执行失败 - 所有路径都加了引号包裹,兼容计算机名、路径带空格的场景
- 脚本执行全程不会产生多余弹窗,适合开机静默运行
内容的提问来源于stack exchange,提问作者Lunarism
相关产品推荐
相关产品推荐

