标题: [文本处理] 批处理如何删除本行及下一行 [打印本页]
作者: 娜美 时间: 2022-1-14 13:58 标题: 批处理如何删除本行及下一行
本帖最后由 娜美 于 2022-1-16 08:48 编辑
如果 企业 右边>中括号的后面是空, 即任何字符也没有, 则删除本行及下一行
THANKS
请允许我补充一下
如果 "执行时间" 右边>中括号的后面是空情况 也需要删除本行及上一行
作者: qixiaobin0715 时间: 2022-1-14 14:43
- @echo off
- set n=true
- setlocal enabledelayedexpansion
- for /f "delims=" %%a in (a.txt) do (
- for /f "tokens=1,2 delims=> " %%b in ("%%a") do (
- if "%%b"=="企业" (
- if "%%c"=="" (
- set n=false
- ) else (
- echo,%%a
- set n=true
- )
- ) else if "!n!"=="true" (
- echo,%%a
- echo,
- )
- )
- )
- pause
复制代码
作者: 娜美 时间: 2022-1-14 15:17
本帖最后由 娜美 于 2022-1-14 15:43 编辑
回复 2# qixiaobin0715
THANKS qixiaobin0715哥 很好
请问如果执行时间右边>中括号的后面是空情况 则需要删除本行及上一行呢
作者: 娜美 时间: 2022-1-14 16:11
请允许我补充一下
如果 "执行时间" 右边>中括号的后面是空情况 也需要删除本行及上一行
作者: aloha20200628 时间: 2022-1-14 16:41
两种要求均能达成...
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"
作者: 娜美 时间: 2022-1-14 17:06
本帖最后由 娜美 于 2022-1-16 08:47 编辑
回复 5# aloha20200628
试了一下似乎不行哦,
作者: aloha20200628 时间: 2022-1-14 18:08
剔除了首尾空格 再试...
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"
作者: 娜美 时间: 2022-1-14 18:17
回复 7# aloha20200628
aloha20200628哥 嗯 这次可以了 Thanks Thanks
作者: for_flr 时间: 2022-1-14 19:00
- $out=[collections.arraylist]@()
- gc a.txt|?{$_ -ne ""}|%{
- if ($_ -match "^企业.*(?<!>)$"){
- $name=$_
- }elseif(test-path variable:name){
- if ($_ -match "^执行.*s$"){
- [void]$out.add($name+"`r`n"+$_)
- remove-variable name
- }
- }
- }
- sc out.txt -value $out
复制代码
我来试试powershell
欢迎光临 批处理之家 (http://bbs.bathome.net/) |
Powered by Discuz! 7.2 |