标题: [文本处理] [已解决]请教:怎么用批处理删除当前目录下所有文本文件中指定字符串所在行之后的内容 [打印本页]
作者: liziyunabcd 时间: 2019-11-9 11:20 标题: [已解决]请教:怎么用批处理删除当前目录下所有文本文件中指定字符串所在行之后的内容
本帖最后由 liziyunabcd 于 2019-11-9 21:12 编辑
请教:怎么用批处理删除当前目录下所有文本文件中指定字符串所在行之后的内容(包括字符串所在行)?- @echo off
- set fx=*.txt
- set "sx=指定字符串"
- for /f "delims=" %%i in ('dir/b %fx%')do (
- echo %%i
- set "n="
- for /f "delims=:" %%j in ('findstr/nc:"%sx%" "%%i"')do set/a n=%%j
- if defined n (
- call more +%%n%% "%%i">temp.yky
- move temp.yky "%%i")
- )
- pause
复制代码
这是一个高手写的,但他这个是删除字符之前的(我要删除之后的)。
有高手能改一下吗?
作者: Batcher 时间: 2019-11-9 12:22
回复 1# liziyunabcd
test1.bat- @echo off
- setlocal enabledelayedexpansion
- set "fx=*.txt"
- set "sx=指定字符串"
- for /f "delims=" %%i in ('dir /b /a-d %fx%')do (
- echo %%i
- call :CutFile "%%i"
- move "temp.yky" "%%i"
- )
- pause
- goto :eof
-
- :CutFile
- (for /f "delims=" %%j in ('type "%~1"') do (
- echo,%%j
- set "str=%%j"
- if "!str:%sx%=!" neq "%%j" (
- goto :eof
- )
- ))>"temp.yky"
- goto :eof
复制代码
作者: Batcher 时间: 2019-11-9 12:27
回复 1# liziyunabcd
test2.bat- 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 编辑
- @echo off
- cd /d "%~dp0"
- set fx=*.txt
- set "sx=!!"
- for /f "delims=" %%i in ('dir /b %fx%')do (
- echo %%i
- set "n="
- for /f "delims=:" %%j in ('findstr /nc:"%sx%" "%%i"') do set /a n=%%j
- setlocal EnableDelayedExpansion
- if defined n (
- (
- for /L %%k in (!n!,-1,1) do (
- set input=
- set /p "input="
- echo,!input!
- )
- )<"%%i" >>tmp.zxy
- move /y tmp.zxy "%%i"
- )
- endlocal
- )
- pause
- 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 |