在批处理文件中使用正则表达式

在批处理文件中使用正则表达式

我可以将正则表达式写入批处理文件中作为所有文件的查找和替换吗?

我目前正在使用批处理文件中的 pandoc 提示将 docx 转换为 txt,并且我希望批处理文件也对转换后的文件运行查找和替换以清理它们,而不必在 notepad++ 中打开并手动运行一些查找和替换。

确实想将 5-10 分钟的工作变成最多 2 分钟的工作,但我对编码不太熟悉。

尝试运行以下命令:

FIND: \r\n
REPLACE: \r\n\r\n

FIND: STUDENT: [^\r\n]{1,200}
REPLACE: STUDENT:

FIND: _[A-z].{1,300}
REPLACE: [nothing] tick .matches new line

FIND: -{2,2000}
REPLACE: [nothing]

如果有人能帮忙或者至少给我指出正确的方向。除了编辑现有的批处理文件以使其执行我想要的操作之外,我对此没有任何经验。

答案1

你可以使用执行文件对单个文件执行查找/替换,然后将其打包在 FOR 循环中以将其应用于“所有”文件。

执行文件是一个正则表达式命令行文本处理器。它是纯脚本(混合 JScript/批处理),可在 XP 及以上版本的任何 Windows 机器上运行,无需第三方 exe 文件。完整文档可通过命令行获取jrepl /?,或jrepl /??获取分页帮助。

我不完全确定如何解释你的第三个替换值,但你应该能够纠正我的任何误解。

下面的代码使用了/T(translate) 选项,它允许您指定一系列查找/替换对。我选择用 来分隔表达式|。第一个参数包含搜索词的分隔列表,第二个参数包含替换词的分隔列表。

/X选项在替换表达式中启用转义序列。

/M选项激活多行模式,以便您可以跨换行符进行搜索。

/F选项指定源文件,并/O -导致结果覆盖原始文件(就地更新)。

为了便于阅读,我添加了^行延续

从命令行:

for %F in (*.txt) do @jrepl "\r\n|STUDENT: [^\r\n]{1,200}|_[A-z].{1,300}|-{2,2000}"^
                            "\r\n\r\n|STUDENT:||" /m /x /t "|" /f "%F" /o -

通过批处理脚本

@echo off
for %%F in (*.txt) do (
  call jrepl "\r\n|STUDENT: [^\r\n]{1,200}|_[A-z].{1,300}|-{2,2000}"^
             "\r\n\r\n|STUDENT:||" /m /x /t "|" /f "%%F" /o -
)

相关内容