找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
查看: 29295|回复: 7

[文本处理] [己解决]批处理删除包含2020的最后一行

[复制链接]
发表于 2020-10-23 20:17:38 | 显示全部楼层 |阅读模式
请教高手求代吗?a.txt最后一行包含2020就删除,如果不包含2020就不删。
发表于 2020-10-23 22:47:14 | 显示全部楼层
有什么用吗?
假设文本最长一行字符数不超过100个,修改后的文本为#a.txt:
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. set n=0
  4. for /f "delims=" %%a in ('type a.txt^|sort /+100') do (
  5.     set "var=%%a"
  6.     set /a n+=1
  7.     if "!n!" == "1" if "!var:2020=!" == "!var!" goto :eof
  8.     if not "!n!" == "1" echo %%a>>1.temp
  9. )
  10. sort /+100 1.temp>#a.txt
  11. del 1.temp
  12. pause
复制代码

评分

参与人数 1技术 +1 收起 理由
keshun + 1 十分感谢

查看全部评分

发表于 2020-10-23 23:00:17 | 显示全部楼层
回复 1# keshun


推荐试试 sed.exe 命令行工具:
http://bcn.bathome.net/s/tool/index.html?key=sed
  1. sed "$s/.*2020.*//" 1.txt > 2.txt
复制代码

评分

参与人数 1技术 +1 收起 理由
keshun + 1 十分感谢

查看全部评分

 楼主| 发表于 2020-10-23 23:01:09 | 显示全部楼层
回复 2# qixiaobin0715


    echo %DATE% %time%>>a.txt
我有个批处理定时循环运行软件,运行前先写入时间a.txt,软件检测有异常记录会写入a.txt,如无异常就不写入,循环多次会产生好多没意义的时间记录。
 楼主| 发表于 2020-10-23 23:07:41 | 显示全部楼层
回复 3# Batcher


    感谢高手!!能否a.txt直接删除不生成另一文本?
发表于 2020-10-23 23:14:29 | 显示全部楼层
回复 5# keshun
  1. sed -i "$s/.*2020.*//" a.txt
复制代码

评分

参与人数 1技术 +1 收起 理由
keshun + 1 十分感谢

查看全部评分

发表于 2020-10-23 23:17:26 | 显示全部楼层
回复 4# keshun


不太了解你的业务需求,但是我认为这样的日期时间记录是非常有意义的。
当你偶尔遇到特殊情况的时候,至少可以证明当时代码检测没有问题。
否则的话你就说不清楚啦,到底是代码没有执行还是别的什么原因导致没有日志记录。
发表于 2021-11-11 11:20:08 | 显示全部楼层
学习了,谢谢大佬的分享
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-21 00:05 , Processed in 0.032139 second(s), 18 queries .

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表