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

[文本处理] 【已解决】批处理删除 某一段代码

[复制链接]
发表于 2023-9-1 15:17:22 | 显示全部楼层
现在需要删除的是T2-M05之间的代码,包括T2行,但是不包括M05,不同文件这两者之间的代码会有不同行数,另外在M05后面加一个指令M55,多个文件需要同样处理,我总是循环不起来。
发表于 2023-9-1 15:52:19 | 显示全部楼层
回复 15# Zhanggli
可用第3方工具sed( http://bcn.bathome.net/tool/4.9/sed.exe

  1. sed -e"/T2/,/M05/{/M05/!d;s/M05/M05\nM55/;}" 1.txt>2.txt
复制代码
发表于 2023-9-1 15:55:31 | 显示全部楼层
本帖最后由 qixiaobin0715 于 2023-9-1 17:21 编辑
  1. @echo off
  2. for /f "delims=" %%x in ('dir /b /a-d *.txt') do (
  3.     set n=0
  4.     (for /f "delims=" %%i in ('type "%%x"') do (
  5.         if "%%i"=="T2" set n=
  6.         if defined n echo,%%i
  7.         if "%%i"=="M05" (
  8.             set n=0
  9.             echo,%%i
  10.             echo,M55
  11.         )
  12.     ))>"New-%%x"
  13. )
  14. pause
复制代码
发表于 2023-9-1 16:51:47 | 显示全部楼层
感谢qixiaobin,真的很简洁明了,再次感谢
发表于 2023-9-1 16:52:50 | 显示全部楼层
我之前的思路也是和前面的定义了两个字符串变量来处理反倒没搞好
发表于 2023-9-1 16:58:58 | 显示全部楼层
不过如果是多个文件同样处理的话需要引入临时文件变量temp吧?
发表于 2023-9-1 16:59:31 | 显示全部楼层
回复 16# Zhanggli


  
  1. @echo off
  2. for /f "delims=" %%i in ('dir /b /a-d *.txt') do (
  3.         call :1 "%%i"
  4. )
  5. pause & exit

  6.         :1
  7.         setlocal
  8.         for /f "tokens=1* delims=:" %%a in ('findstr /nxr /c:"M05" /c:"T2" "%~1"') do (
  9.                 if not defined s (
  10.                         set s=%%a
  11.                 ) else (
  12.                         set e=%%a
  13.                 )
  14.         )
  15.         (for /f "tokens=1* delims=:" %%a in ('findstr /n .* "%~1"') do (
  16.                 if %%a lss %s% (
  17.                         echo=%%b
  18.                 ) else if %%a equ %e% (
  19.                         echo=%%b
  20.                         echo=M55
  21.                 ) else if %%a gtr %e% (
  22.                         echo=%%b
  23.                 )
  24.         ))>$
  25.         move /y $ "%~1"
  26.         endlocal
  27.         exit /b
复制代码
发表于 2023-9-1 17:21:41 | 显示全部楼层
回复 21# Zhanggli
已修改
发表于 2023-9-1 21:15:08 | 显示全部楼层
太赞了,我试了好几次循环都没成功,底子还是太弱了,再次感谢
 楼主| 发表于 2023-11-30 20:15:09 | 显示全部楼层
回复 9# 77七


    微软总把 制表符  换成  空格   (有时候 9个   有时候8个)

有时候  还在会把
<Application Id="WindowsBackup" Executable="WindowsBackupClient.exe" EntryPoint="WindowsBackup.App" uap10:TrustLevel="mediumIL" uap10:RuntimeBehavior="windowsApp">"

替换成
<Application Id="WindowsBackup" Executable="WindowsBackupClient.exe" EntryPoint="WindowsBackup.App" uap10/4:TrustLevel="mediumIL" uap10/4:RuntimeBehavior="windowsApp">"

还有其他办法吗?
发表于 2023-11-30 21:19:53 | 显示全部楼层
回复 25# lovekix


   请把出现问题的文件传上来,看看是什么原因。
 楼主| 发表于 2023-12-1 08:48:49 | 显示全部楼层
本帖最后由 lovekix 于 2023-12-1 08:52 编辑

回复 26# 77七


https://wwrj.lanzouu.com/i461Y1ggo9zc
发表于 2023-12-1 14:52:31 | 显示全部楼层
本帖最后由 77七 于 2023-12-1 14:54 编辑

回复 27# lovekix


  1. @echo off
  2. set "str1=<Application Id="WindowsBackup" Executable="WindowsBackupClient.exe" EntryPoint="WindowsBackup.App" uap10[/]*[4]*:TrustLevel="mediumIL" uap10[/]*[4]*:RuntimeBehavior="windowsApp">"
  3. set "str2=</Application>"
  4. set "str1=%str1:"="""%"
  5. for /f "tokens=1 delims=:" %%a in ('findstr /nxr /c:"[         ]*%str1%" "appxmanifest.xml"') do set start=%%a
  6. for /f "tokens=1 delims=:" %%a in ('findstr /nxr /c:"[         ]*%str2%" "appxmanifest.xml"') do (
  7.         if %%a gtr %start% (
  8.                 set end=%%a
  9.                 goto :next
  10.         )
  11. )
  12. :next
  13. (for /f "tokens=1* delims=:" %%a in ('findstr /n .* "appxmanifest.xml"') do (
  14.         if %%a lss %start% echo=%%b
  15.         if %%a gtr %end% echo=%%b
  16. ))>"appxmanifest-2.xml"
  17. pause
复制代码
 楼主| 发表于 2023-12-1 17:57:25 | 显示全部楼层
回复 28# 77七

这行代码  可以用* 代替后面的吗?
  1. set "str1=<Application Id="WindowsBackup" Executable="WindowsBackupClient.exe" EntryPoint="WindowsBackup.App" uap10[/]*[4]*:TrustLevel="mediumIL" uap10[/]*[4]*:RuntimeBehavior="windowsApp">"
复制代码
  1. set "str1=<Application Id="WindowsBackup" Executable="WindowsBackupClient.exe" EntryPoint="WindowsBackup.App"*>"
复制代码
发表于 2023-12-1 18:24:38 | 显示全部楼层
回复 29# lovekix


   .*
前面加个.
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-3-17 14:29 , Processed in 0.020673 second(s), 7 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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