我正在开发一个小型实用程序,该实用程序旨在在第一次出现给定分隔符后将文件分成 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/