Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/batch-file/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Batch file 删除包含特定单词的行之间的内容-在文本文档中_Batch File_Text Files - Fatal编程技术网

Batch file 删除包含特定单词的行之间的内容-在文本文档中

Batch file 删除包含特定单词的行之间的内容-在文本文档中,batch-file,text-files,Batch File,Text Files,我有一个巨大的文本文件,我想删除两个特定单词之间的某些部分。e、 g: Lorem ipsum dolor sit amet、Concertetuer Adipising Elite、sed diam 不,不,不,不,不,不,不,不,不,不,不 帕特。但是,我们要尽可能少地使用它 乌拉姆科珀公司的主要业务是为消费者提供服务。 在瓦卢普塔特·维利特埃塞的亨德雷特,有两个人在一起 法律上的侵权行为,在 爱欲与积存,尊严与温文尔雅 这是一个很好的解决方案。 Nam liber TEMPORT cum

我有一个巨大的文本文件,我想删除两个特定单词之间的某些部分。e、 g:

Lorem ipsum dolor sit amet、Concertetuer Adipising Elite、sed diam 不,不,不,不,不,不,不,不,不,不,不 帕特。但是,我们要尽可能少地使用它 乌拉姆科珀公司的主要业务是为消费者提供服务。 在瓦卢普塔特·维利特埃塞的亨德雷特,有两个人在一起 法律上的侵权行为,在 爱欲与积存,尊严与温文尔雅 这是一个很好的解决方案。 Nam liber TEMPORT cum soluta nobis eleifend选项congue nihil 这是一个很好的例子。典型非 哈本·克拉里塔姆·因斯塔姆;通常情况下,法律是以法律为基础的 克拉里塔坦。列克托雷斯·勒盖尔·刘斯的调查 第二节萨皮乌斯节。单簧管是动态过程的 以下是选择权的变更。米鲁姆街 litteragothica.

删除“guis”和“gothica”之间的单词,它变成:

这是一位杰出的领袖,他是一位伟大的领袖。但是,我要一个小小的威尼斯,quis gothica

实际上,在巨大的文件中有很多“gui”和“gothica”,我必须把它们全部去掉


这可以通过一个简单的批处理脚本来实现,但我对这个主题太陌生了。TIA如果有人帮助的话。

这里是我提出的最简单的解决方案,我确信它在特殊字符等方面存在问题,但适用于给定的示例。我使用了文件名
input.txt
output.txt

@echo off
setlocal disableDelayedExpansion
set "FLAG=FALSE"
:: Define LF to contain a newline character
set LF=^


:: Do not remove above lines!
> output.txt (
    for /f "eol= tokens=*" %%A in (input.txt) do (
        set "ln=%%A"
        setlocal enableDelayedExpansion
        for %%L in ("!LF!") do (
            for /f "eol= delims=., " %%W in ("!ln: =%%~L!") do (
                if "%%W"=="quis" (
                    set "FLAG=TRUE"
                    <nul set /p=%%W 
                ) else if "%%W"=="gothica" (
                    <nul set /p=%%W 
                    set "FLAG=FALSE"
                ) else if "!FLAG!"=="FALSE" (
                    <nul set /p=%%W 
                )
            )
        )
        endlocal
    )
)
@echo关闭
setlocal disableDelayedExpansion
设置“FLAG=FALSE”
::定义LF以包含换行符
设置LF=^
::请勿删除上面的行!
>output.txt(
对于(input.txt)do中的/f“eol=tokens=*”%%A(
设置“ln=%%A”
setlocal enableDelayedExpansion
对于(“!LF!”)中的%%L,请执行以下操作(
对于/f“eol=delims=,”%%W in(“!ln:=%%~L!”)执行以下操作(
如果“%%W”==“quis”(
设置“FLAG=TRUE”

出于好奇,为什么是批处理文件?到目前为止你都试过什么?我试过键入file.txt | findstr/v guis | findstr/v gothica,但它只删除包括guis和gothica在内的那些行。我需要删除它们之间的所有行。我希望你能在解释之后提供帮助。请不要将StackOverflow与免费代码编写服务混淆ce!让我们看看你尝试了什么,并准确地描述你遇到的问题。请阅读全文,了解这个网站是如何工作的!好的,我明白了。你粘贴的文本显示为一行,这就是文件的实际外观吗?顺便说一句,你可能想把这一点纳入你的问题中(这可能就是你被否决的原因,这里的人希望先看看你自己尝试了什么)。我会尝试一些东西,但同时这看起来可能是相关的?你认为这可以通过一个简单的批处理文件来实现的假设是错误的。这是可以做到的(有一些限制,而且是缓慢的),但它远不是简单的。一般来说,批处理并不是处理文本文件的好选择。简单的解决方案有很多局限性。一个健壮的解决方案需要大量神秘的代码。