gpt4 book ai didi

batch-file - 用于提取两个指定行之间的行的批处理脚本

转载 作者:行者123 更新时间:2023-12-04 01:04:08 26 4
gpt4 key购买 nike

我有一个文本文件,想使用 Windows 批处理脚本提取两个指定行之间的所有行。

第 1 行:!FILE_FORMAT=ADS

第 2 行:!VERSION=1.0

.

.

LineX: 'Parent|Child|IsPrimary|****(该行以 ' 开头且很长)

.

.

LineY: !PropertyArray=Cost Center(行以 ! 开头)

.

.

Z 线。

我想提取LineX和LineY之间的所有行并将其输出到另一个文件。

下面的代码可以正确找到起始行。但它只是删除了我想要停止脚本的行(Y 行)并输出文件的其余部分。

输出是从 Line X 到 Line Z,没有 Line Y。

@for /f "tokens=1 delims=[]" %%a in ('find /n "'Parent|Child"^<D:\DEV\Test\Cost_Center.txt') do @(
more +%%a D:\DEV\Test\Cost_Center.txt |find /v "!PropertyArray=Cost Center" || goto :eof)>D:\DEV\Test\Cost_Center_Out.txt

最佳答案

@ECHO OFF
SETLOCAL
SET "sourcedir=c:\sourcedir"
SET "destdir=c:\destdir"
for /f "tokens=1 delims=[]" %%a in ('find /n "'Parent|Child"^<"%sourcedir%\Cost_Center.txt" ') do set /a start=%%a
for /f "tokens=1 delims=[]" %%a in ('find /n "!PropertyArray=Cost Center"^<"%sourcedir%\Cost_Center.txt" ') do set /a end=%%a
(
for /f "tokens=1* delims=[]" %%a in ('find /n /v ""^<"%sourcedir%\Cost_Center.txt" ') do (
IF %%a geq %start% IF %%a leq %end% ECHO(%%b
)
)>"%destdir%\newfile.txt"
GOTO :EOF

使用您熟悉的方法 - 我已经更改了源目录和目标目录/文件名以适合我的系统。不确定是否要包含两个目标行 - 只需将 geq 更改为 gtr 和/或将 leq 更改为 lss 取决于您要排除的内容(如果有的话)。

如果包含一些样本数据可能会更容易...


编辑 20130807T0207Z ECHO 变为 ECHO( 以应对空行。

关于batch-file - 用于提取两个指定行之间的行的批处理脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18069790/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com