我想删除另一个文档中已存在的一个文档中的行。
示例:
文件1
A
B
C
D
文件2
A
C
新文件
B
D
有没有办法在Windows上将其写为批处理文件?
之前已经在这里提出过这个问题,但是没有一个问题对我有帮助,因为它们都适用于Linux或其他不能在批处理文件中运行的东西。
任何帮助表示感谢。
答案 0 :(得分:1)
@echo off
setlocal
rem Define the lines in Document2
for /F "delims=" %%a in (Document2.txt) do set doc2["%%a"]=1
rem Show lines in Document1 that are not in Document2
for /F "delims=" %%a in (Document1.txt) do (
if not defined doc2["%%a"] (
set /P "=%%a" < NUL
echo/
)
)
如果文档包含引号,以前的批处理文件可能会失败,尽管这取决于引号与空格的位置。 Document1是两个文件中最大的一个是方便的。
答案 1 :(得分:0)
Windows批处理文件没有可以处理此问题的文件读取功能。它没有替代grep或Linux的任何高级文本搜索功能,所以AFAIK,使用vanilla Windows批处理脚本无法完成。
我不会推荐任何自定义Windows批处理脚本编写器,因为它们都不同,如果你想走这条路,你可以通过找到合适的批处理脚本程序来安装Windows上的Linux答案。
如果您提供了为什么要这样做的完整上下文,除了使用Windows批处理脚本之外,还有更好的方法可以做到这一点吗?您可以使用更强大的脚本引擎(如AutoHotKey和其他类似程序)轻松制作自包含的可执行文件。