String 批处理,比较两个文件并将差异写入另一个文件

String 批处理,比较两个文件并将差异写入另一个文件,string,batch-file,grep,compare,findstr,String,Batch File,Grep,Compare,Findstr,我一直在寻找解决办法,但仍然有问题。我有两个文件: File1.txt 1111 2222 3333 File2.txt 1111 2222 3333 4444 我想要一个只有区别的输出文件: File3.txt 4444 我尝试过使用Findstr,但由于字符串太大,它不起作用。我也尝试过gerp,但我可以;我做不到 这是我的批处理代码(由于字符串太长,无法工作): 但它只创建空文件。我是windows用户。 希望你能帮我找到解决办法 干杯使用comm实用程序(): 这应

我一直在寻找解决办法,但仍然有问题。我有两个文件:

File1.txt
 1111
 2222
 3333

File2.txt
 1111
 2222
 3333
 4444
我想要一个只有区别的输出文件:

File3.txt
 4444
我尝试过使用Findstr,但由于字符串太大,它不起作用。我也尝试过gerp,但我可以;我做不到

这是我的批处理代码(由于字符串太长,无法工作):

但它只创建空文件。我是windows用户。 希望你能帮我找到解决办法

干杯

使用comm实用程序():

这应该起作用:

findstr /v /g:file1.txt file2.txt >result.txt
我想这对800个字符有效——对于20000行来说不会很快

@echo off
for /f "delims=" %%a in (file2.txt) do (
   find "%%a" <"file1.txt" || >>result.txt echo %%a
)
@echo关闭
对于(file2.txt)中的/f“delims=“%%a”do(
查找“%%a”>result.txt echo%%a
)

PowerShell有一个diff实用程序(如果有)

@echo off
powershell "diff (Get-Content File1.txt) (Get-Content File2.txt) | foreach {$_.InputObject}" >result.txt

您可以在linux中使用
diff

diff file1.txt file2.txt
3a4
>  4444

使用
grep

grep -vf file1.txt file2.txt
 4444

使用
awk

awk 'NR==FNR {a[$0]=1;next} !a[$0]' file1.txt file2.txt
 4444

如果您有权访问例如cygwin,您可能想要
diff
,而不是
grep
。我没有访问cygwin的权限。行是否超过8191个字符?文件中大概有多少行?不,最多10-800行。大约有20000行。我是windows用户,所以我不能使用它。虽然有点慢,但最终还是可以用的!非常感谢。干杯这个还是有点问题。我的file1.txt有这样的内容:“陆地单位屏幕上的陆地单位屏幕上的陆地单位屏幕上的陆地单位屏幕上的陆地单位屏幕上的陆地单位屏幕上的陆地单位屏幕上的陆地单位屏幕上的陆地单位屏幕上的陆地单位屏幕上的陆地单位屏幕上的陆地单位当我尝试将其压缩到file2.txt时,我的cmd显示:File not found-land_units_onscreen_name_Aet_Cav TRUE,我的输出文件只是file2.txt的副本。尝试find解决方案上方的findstr解决方案。您的字符串包含普通批处理的有毒字符。引号会影响它。它说“Findstr搜索字符串太长”也许有办法替换不同字符上的字符,并在整个过程后将它们放回原处?“谢谢,第二个解决方案帮助了我:”)之间也有标签
diff file1.txt file2.txt
3a4
>  4444
grep -vf file1.txt file2.txt
 4444
awk 'NR==FNR {a[$0]=1;next} !a[$0]' file1.txt file2.txt
 4444