[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖
type "a" | findstr /bevlig:"b.txt">不同内容.txt 这一句是错误的。
看了下附件,两个文本大小都不超过3MB,13W多行,谈不上"超大"。
用 PowerShell 就可以搞定,脚本长一点而已。

保存为 Test.ps1,单击右键,选择"使用 PowerShell 运行"。
  1. $myPath = $MyInvocation.MyCommand.Path -replace '\\[^\\]*$', '\';
  2. $fileA = $myPath + 'a.txt';            #源文本A
  3. $fileB = $myPath + 'b.txt';            #源文本B
  4. $fSame = $myPath + '相同.txt';         #相同文本
  5. $fDiff = $myPath + '不同.txt';         #不同文本
  6. If (![IO.File]::Exists($fileA) -or ![IO.File]::Exists($fileB)){
  7.     echo '源文件不存在';
  8.     [Console]::ReadLine();
  9.     exit;
  10. }
  11. $htA = New-Object System.Collections.HashTable;                               #HashTable,存放文本A数据
  12. $htB = New-Object System.Collections.HashTable;                               #HashTable,存放文本B数据
  13. $srA = New-Object System.IO.StreamReader($fileA, [Text.Encoding]::Default);   #读文本A
  14. $srB = New-Object System.IO.StreamReader($fileB, [Text.Encoding]::Default);   #读文本B
  15. $swSame = New-Object System.IO.StreamWriter($fSame, $false, [Text.Encoding]::Default); #写文件->相同
  16. $swDiff = New-Object System.IO.StreamWriter($fDiff, $false, [Text.Encoding]::Default); #写文件->不同
  17. while($srB.Peek() -ge 0){
  18.     $strLine = $srB.ReadLine();           #逐行读文本B
  19.     If (!$htB.ContainsKey($strLine)){
  20.         $htB.Add($strLine, $true);        #存入HashTable
  21.     }
  22. }
  23. $srB.Dispose();
  24. $srB.Close();
  25. while($srA.Peek() -ge 0){
  26.     $strLine = $srA.ReadLine();           #逐行读文本A
  27.     If (!$htA.ContainsKey($strLine)){
  28.         $htA.Add($strLine, $true);        #存入HashTable
  29.     }
  30.     If (!$htB.ContainsKey($strLine)){
  31.         $swDiff.WriteLine($strLine);      #写文件->不同
  32.         $swDiff.Flush();
  33.     } Else {
  34.         $swSame.WriteLine($strLine);      #写文件->相同
  35.         $swSame.Flush();
  36.     }
  37. }
  38. $srA.Dispose();
  39. $srA.Close();
  40. $swSame.Dispose();
  41. $srB = New-Object System.IO.StreamReader($fileB, [Text.Encoding]::Default);   #读文本B
  42. while($srB.Peek() -ge 0){
  43.     $strLine = $srB.ReadLine();
  44.     If (!$htA.ContainsKey($strLine)){
  45.         $swDiff.WriteLine($strLine);      #写文件->不同
  46.         $swDiff.Flush();
  47.     }
  48. }
  49. $srB.Dispose();
  50. $srB.Close();
  51. $swDiff.Dispose();
  52. echo 'Done';
  53. [Console]::ReadLine();
复制代码
1

评分人数

TOP

返回列表