批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程
[批处理文件精品]批处理版照片整理器[批处理文件精品]纯批处理备份&还原驱动在线第三方下载
返回列表 发帖

[文本处理] 批处理如何删除本行及下一行

本帖最后由 娜美 于 2022-1-16 08:48 编辑

如果 企业 右边>中括号的后面是空, 即任何字符也没有, 则删除本行及下一行


THANKS
请允许我补充一下
如果 "执行时间" 右边>中括号的后面是空情况  也需要删除本行及上一行

  1. @echo off
  2. set n=true
  3. setlocal enabledelayedexpansion
  4. for /f "delims=" %%a in (a.txt) do (
  5.     for /f "tokens=1,2 delims=> " %%b in ("%%a") do (
  6.         if "%%b"=="企业" (
  7.             if "%%c"=="" (
  8.                 set n=false
  9.             ) else (
  10.                 echo,%%a
  11.                 set n=true
  12.             )
  13.         ) else if "!n!"=="true" (
  14.             echo,%%a
  15.             echo,
  16.         )
  17.     )
  18. )
  19. pause
复制代码

TOP

本帖最后由 娜美 于 2022-1-14 15:43 编辑

回复 2# qixiaobin0715


THANKS qixiaobin0715哥  很好
请问如果执行时间右边>中括号的后面是空情况  则需要删除本行及上一行呢

TOP

请允许我补充一下
如果 "执行时间" 右边>中括号的后面是空情况  也需要删除本行及上一行

TOP

两种要求均能达成...
setlocal enabledelayedexpansion
set n=0
(for /f "usebackq tokens=* delims= " %%s in ("a.txt") do (
    set z=%%s
    if "!z:~-1!" equ ">" (set n=1)
    if "!z:~,4!" equ "执行时间" (
       if !n! equ 0 (echo,!ls!)&(echo,%%s)
       set "n=0"
    )
    set ls=%%s
))>"a.new.txt"

TOP

本帖最后由 娜美 于 2022-1-16 08:47 编辑

回复 5# aloha20200628


试了一下似乎不行哦,

TOP

剔除了首尾空格 再试...
setlocal enabledelayedexpansion
set n=0
(for /f "usebackq tokens=* delims= " %%s in ("a.txt") do (
    set z=%%s & set "z=!z: =!"
    if "!z:~-1!" equ ">" (set n=1)
    if "!z:~,4!" equ "执行时间" (
       if !n! equ 0 (echo,!ls!)&(echo,%%s)
       set "n=0"
    )
    set ls=%%s
)) >"a.new.txt"

TOP

回复 7# aloha20200628


   aloha20200628哥  嗯 这次可以了  Thanks Thanks

TOP

  1. $out=[collections.arraylist]@()
  2. gc a.txt|?{$_ -ne ""}|%{
  3. if ($_ -match "^企业.*(?<!>)$"){
  4.   $name=$_
  5.   }elseif(test-path variable:name){
  6.     if ($_ -match "^执行.*s$"){
  7.       [void]$out.add($name+"`r`n"+$_)
  8.       remove-variable name
  9.     }
  10.   }
  11. }
  12. sc out.txt -value $out
复制代码
我来试试powershell

TOP

返回列表