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

[文本处理] [已解决]请教:怎么用批处理删除当前目录下所有文本文件中指定字符串所在行之后的内容

[复制链接]
发表于 2019-11-9 11:20:46 | 显示全部楼层 |阅读模式
本帖最后由 liziyunabcd 于 2019-11-9 21:12 编辑

请教:怎么用批处理删除当前目录下所有文本文件中指定字符串所在行之后的内容(包括字符串所在行)?
  1. @echo off
  2. set fx=*.txt
  3. set "sx=指定字符串"
  4. for /f "delims=" %%i in ('dir/b %fx%')do (
  5. echo %%i
  6. set "n="
  7. for /f "delims=:" %%j in ('findstr/nc:"%sx%" "%%i"')do set/a n=%%j
  8. if defined n (
  9. call more +%%n%% "%%i">temp.yky
  10. move temp.yky "%%i")
  11. )
  12. pause
复制代码
这是一个高手写的,但他这个是删除字符之前的(我要删除之后的)。

有高手能改一下吗?

评分

参与人数 1PB +2 收起 理由
Batcher + 2 感谢给帖子标题标注[已解决]字样

查看全部评分

发表于 2019-11-9 12:22:53 | 显示全部楼层
回复 1# liziyunabcd


test1.bat
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. set "fx=*.txt"
  4. set "sx=指定字符串"
  5. for /f "delims=" %%i in ('dir /b /a-d %fx%')do (
  6.     echo %%i
  7.     call :CutFile "%%i"
  8.     move "temp.yky" "%%i"
  9. )
  10. pause
  11. goto :eof

  12. :CutFile
  13. (for /f "delims=" %%j in ('type "%~1"') do (
  14.     echo,%%j
  15.     set "str=%%j"
  16.     if "!str:%sx%=!" neq "%%j" (
  17.         goto :eof
  18.     )
  19. ))>"temp.yky"
  20. goto :eof
复制代码

评分

参与人数 1技术 +1 收起 理由
liziyunabcd + 1 完美解决,老大出手,效果非凡。

查看全部评分

发表于 2019-11-9 12:27:40 | 显示全部楼层
回复 1# liziyunabcd


test2.bat
  1. sed -i "0,/指定字符串/!d" *.txt
复制代码
命令行工具 sed.exe 下载地址
http://bcn.bathome.net/s/tool/index.html?key=sed
发表于 2019-11-9 12:35:18 | 显示全部楼层
本帖最后由 flashercs 于 2019-11-9 14:59 编辑
  1. @echo off
  2. cd /d "%~dp0"
  3. set fx=*.txt
  4. set "sx=!!"
  5. for /f "delims=" %%i in ('dir /b %fx%')do (
  6. echo %%i
  7. set "n="
  8. for /f "delims=:" %%j in ('findstr /nc:"%sx%" "%%i"') do set /a n=%%j
  9. setlocal EnableDelayedExpansion
  10. if defined n (
  11. (
  12.   for /L %%k in (!n!,-1,1) do (
  13.     set input=
  14.     set /p "input="
  15.     echo,!input!
  16.   )
  17. )<"%%i" >>tmp.zxy
  18. move /y tmp.zxy "%%i"
  19. )
  20. endlocal
  21. )
  22. pause
  23. exit /b
复制代码

评分

参与人数 1技术 +1 收起 理由
liziyunabcd + 1 感谢大牛,完美解决。

查看全部评分

 楼主| 发表于 2019-11-9 21:02:25 | 显示全部楼层
回复 2# Batcher 老大出手,几乎完美解决,老大,那“指定字符串”怎么删除呢,就是包括字符串也要删除。
 楼主| 发表于 2019-11-9 21:04:28 | 显示全部楼层
回复 3# Batcher 老大这个工具就是删除“指定字符串”的工具是吧,感谢老大,老大出手,什么事都能搞字,真感谢这么好的平台,这么好的老大···
 楼主| 发表于 2019-11-9 21:09:14 | 显示全部楼层
回复 4# flashercs


    感谢大牛,和老大的一样的效果,虽然长了两行,说明真是自己改的,感谢感谢大牛
发表于 2019-11-9 21:13:36 | 显示全部楼层
回复 6# liziyunabcd


    sed.exe 是个功能强大的命令行工具,大部分文本处理操作都可以用它来实现。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-3-19 12:04 , Processed in 0.021445 second(s), 8 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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