string - 删除给定字符串第一次出现之后/之前的所有内容

标签 string batch-file search

我正在开发一个小型实用程序,该实用程序旨在在第一次出现给定分隔符后将文件分成 2 个,以便从单个输入文件中获得 2 个较小的输出文件。

例如,假设您有输入文件内容:

Alpha
Bravo Charlie
Charlie Echo

我使用的分隔符是Charlie,我怎样才能获得一对输出文件,例如:

Alpha
Bravo

<blank line>
Charlie Echo

我目前正在沿着查找分隔符字符串第一次出现的方式工作,然后在分割文本之前使用分隔符字符串位置对原始文本执行两次子字符串,然后将其保存到输出中。然而,虽然我成功地找到了如何处理子字符串,但我还没有成功地找到类似 strpos 的函数。

那么,我该怎么做才能从文本/文件路径的输入 block 获得类似 strpos 的结果,或者是否有另一种(更好?)方法来完成我想做的事情?

注意为此,我无法使用 Windows 批处理脚本之外的任何内容,因此虽然 PHP、Sed,甚至 Java,但它不是一个选项

最佳答案

这是我的解决方案。您可以在 _outfile1_outfile2 变量中配置输出文件,以及在 _split 中配置分割 token 。输入文件 input.txt 假定您在问题中陈述的内容。

@ECHO OFF
SETLOCAL EnableDelayedExpansion

SET _outfile1=output1.txt
SET _outfile2=output2.txt
SET _split=Charlie

SET OF=!_outfile1!
FOR /F "tokens=*" %%A IN ( input.txt ) DO (
    SET TEST=%%A
    IF "!OF!"=="!_outfile1!" (
        IF "!TEST:%_split%=!"=="%%A" (
            ECHO %%A >> !OF!
        ) ELSE (
            ECHO !TEST:%_split%=! >> !OF!
            SET OF=!_outfile2!
            ECHO. >> !OF!
        )
    ) ELSE (
        ECHO %%A >> !OF!
    )
)

关于string - 删除给定字符串第一次出现之后/之前的所有内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29939686/

相关文章:

php - 使用mysql搜索多个表?

java - 每行分割未知数量的字符串

java - 如何划分以不同语言特定字符开头的名称字符串

mysql - SQL 搜索名称并按最佳匹配排序

windows - 使用 cmd 将文件日期附加到文件名

windows - 等待批处理文件直到指定时间

search - 数据库中的全文本搜索

python - 使用 Python 按子字符串对字符串列表进行排序

javascript - 可以将数字或数字数组作为参数并返回字符串或字符串数​​组的函数

php - 以时间间隔批量访问 URL PHP MySQL