Board logo

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

作者: liziyunabcd    时间: 2019-11-9 11:20     标题: [已解决]请教:怎么用批处理删除当前目录下所有文本文件中指定字符串所在行之后的内容

本帖最后由 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
复制代码
这是一个高手写的,但他这个是删除字符之前的(我要删除之后的)。

有高手能改一下吗?
作者: Batcher    时间: 2019-11-9 12:22

回复 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
复制代码

作者: Batcher    时间: 2019-11-9 12:27

回复 1# liziyunabcd


test2.bat
  1. sed -i "0,/指定字符串/!d" *.txt
复制代码
命令行工具 sed.exe 下载地址
http://bcn.bathome.net/s/tool/index.html?key=sed
作者: flashercs    时间: 2019-11-9 12:35

本帖最后由 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
复制代码

作者: liziyunabcd    时间: 2019-11-9 21:02

回复 2# Batcher 老大出手,几乎完美解决,老大,那“指定字符串”怎么删除呢,就是包括字符串也要删除。
作者: liziyunabcd    时间: 2019-11-9 21:04

回复 3# Batcher 老大这个工具就是删除“指定字符串”的工具是吧,感谢老大,老大出手,什么事都能搞字,真感谢这么好的平台,这么好的老大···
作者: liziyunabcd    时间: 2019-11-9 21:09

回复 4# flashercs


    感谢大牛,和老大的一样的效果,虽然长了两行,说明真是自己改的,感谢感谢大牛
作者: Batcher    时间: 2019-11-9 21:13

回复 6# liziyunabcd


    sed.exe 是个功能强大的命令行工具,大部分文本处理操作都可以用它来实现。




欢迎光临 批处理之家 (http://bathome.net./) Powered by Discuz! 7.2