PowerShell 脚本 比较两文件差异(带粗狂进度条)并汇总输出
一上来就放代码
function Compare-FileHex {param ([Parameter(Mandatory=$true)][string]$SourceFile,[Parameter(Mandatory=$true)][string]$CompareFile,[Parameter(Mandatory=$false)][string]$OutputFile,[Parameter(Mandatory=$false)][int]$BufferSize = 1MB)function Format-FileSize {param ([long]$Size)if ($Size -ge 1GB) { "{0:N2} GB" -f ($Size / 1GB) }elseif ($Size -ge 1MB) { "{0:N2} MB" -f ($Size / 1MB) }elseif ($Size -ge 1KB) { "{0:N2} KB" -f ($Size / 1KB) }else { "$Size Bytes" }}$sourceStream = [System.IO.File]::OpenRead($SourceFile)$compareStream = [System.IO.File]::OpenRead($CompareFile)$results = New-Object System.Collections.Generic.List[PSCustomObject]$buffer1 = New-Object byte[] $BufferSize$buffer2 = New-Object byte[] $BufferSize$totalLength = [Math]::Max($sourceStream.Length, $compareStream.Length)$position = 0$sourceSize = $sourceStream.Length$compareSize = $compareStream.Lengthtry {while ($position -lt $totalLength) {$read1 = $sourceStream.Read($buffer1, 0, $BufferSize)$read2 = $compareStream.Read($buffer2, 0, $BufferSize)$maxRead = [Math]::Max($read1, $read2)for ($i = 0; $i -lt $maxRead; $i++) {$sourceByte = if ($i -lt $read1) { $buffer1[$i] } else { $null }$compareByte = if ($i -lt $read2) { $buffer2[$i] } else { $null }if ($sourceByte -ne $compareByte) {$results.Add([PSCustomObject]@{Address = $position + $iSourceFile = if ($sourceByte -ne $null) { "{0:X2}" -f $sourceByte } else { "--" }CompareFile = if ($compareByte -ne $null) { "{0:X2}" -f $compareByte } else { "--" }})}}$position += $maxRead$percentComplete = [math]::Round(($position / $totalLength) * 100, 2)Write-Progress -Activity "比较文件" -Status "$percentComplete% 完成" -PercentComplete $percentComplete}}finally {$sourceStream.Close()$compareStream.Close()}Write-Progress -Activity "比较文件" -Completed$sourceSizeFormatted = Format-FileSize -Size $sourceSize$compareSizeFormatted = Format-FileSize -Size $compareSize$summary = @"
源文件:$SourceFile
大小: $sourceSizeFormatted比较文件:$CompareFile
大小: $compareSizeFormatted不同之处: $($results.Count) 字节
详细如下:"@$detailedOutput = "地址 源文件 比较文件`n"$detailedOutput += "--------------------------`n"$lastAddress = -1foreach ($result in $results) {if ($lastAddress -ne -1 -and $result.Address -ne $lastAddress + 1) {$detailedOutput += "`n" # 添加空行表示不连续}$detailedOutput += "0x{0:X8} {1} {2}`n" -f $result.Address, $result.SourceFile, $result.CompareFile$lastAddress = $result.Address}$fullOutput = $summary + $detailedOutputif ($OutputFile) {$fullOutput | Out-File -FilePath $OutputFile -Encoding utf8Write-Host "结果已保存到: $OutputFile"}Write-Host $fullOutput
}
2、调用
假设您将函数保存在名为 Compare-FileHex.ps1 的文件中。在您想要使用这个函数的其他 PowerShell 脚本中,您可以这样导入和使用它:
-
导入 Compare-FileHex 函数 . "C:\Path\To\Compare-FileHex.ps1"
-
现在您可以使用这个函数了 Compare-FileHex -SourceFile "path\to\source\file" -CompareFile "path\to\compare\file" -OutputFile "path\to\output.txt"
3、效果 (gif 随便看了。渣画质)


分别采用两组参数 (不带生成txt与带生成txt的 f:\play.txt)
4、 生成的txt内容
源文件:D:\Program Files\Sublime Text\sublime_text.exe.old
大小: 7.74 MB
比较文件:D:\Program Files\Sublime Text\sublime_text.exe
大小: 7.74 MB
不同之处: 6 字节
详细如下:
地址 源文件 比较文件
--------------------------
0x0001A4E8 80 C6
0x0001A4E9 79 41
0x0001A4EB 00 01
0x0001A4EC 0F B2
0x0001A4ED 94 00
0x0001A4EE C2 90
5、结束语
自用编制注册机时候的帮助工具,不用装什么软件工具。大文件,大差异没试验过,加了缓存参数,有兴趣自己试试吧,全源码公开。
相关文章:
PowerShell 脚本 比较两文件差异(带粗狂进度条)并汇总输出
一上来就放代码 function Compare-FileHex {param ([Parameter(Mandatory$true)][string]$SourceFile,[Parameter(Mandatory$true)][string]$CompareFile,[Parameter(Mandatory$false)][string]$OutputFile,[Parameter(Mandatory$false)][int]$BufferSize 1MB)function Forma…...
学习 UE5 的一些前置操作总结
随着 Unity, Godot 这些引擎都玩抽象,主动捅自己一刀后,UE5 的风头不可谓不盛,本着多学一点免得失业的思路方针,咱也研究了一下 UE5 引擎,然后发现想要开始使用 UE5 ,包含了很多前置操作,这里总…...
C#/.NET/.NET Core技术前沿周刊 | 第 10 期(2024年10.14-10.20)
前言 C#/.NET/.NET Core技术前沿周刊,你的每周技术指南针!记录、追踪C#/.NET/.NET Core领域、生态的每周最新、最实用、最有价值的技术文章、社区动态、优质项目和学习资源等。让你时刻站在技术前沿,助力技术成长与视野拓宽。 欢迎投稿、推荐…...
Git 基本配置
目录 打开 Git Bash设置用户信息查看配置信息修改电脑名字为常用指令配置别名打开用户目录,创建 .bashrc 文件在 .bashrc 文件中输入如下内容:打开gitBash,执行 source ~/.bashrc 解决GitBash乱码问题打开GitBash执行下面命令${git_home}/etc…...
理工科考研想考计算机,湖南大学、重大、哈工大威海、山东大学,该如何选择?
C哥专业提供——计软考研院校选择分析专业课备考指南规划 计算机对理工科同学来说,还是性价比很高的,具有很大的优势! 一、就业前景广阔 高需求行业 在当今数字化时代,计算机技术几乎渗透到了各个领域,无论是互联网…...
使用langchain和大模型API提取QA的实战教程
大家好,我是herosunly。985院校硕士毕业,现担任算法研究员一职,热衷于大模型算法的研究与应用。曾担任百度千帆大模型比赛、BPAA算法大赛评委,编写微软OpenAI考试认证指导手册。曾获得阿里云天池比赛第一名,CCF比赛第二名,科大讯飞比赛第三名。授权多项发明专利。对机器学…...
Java面试场景题(1)---如何使用redis记录上亿用户连续登陆天数
感谢uu们的观看,话不多说开始~ 对于这个问题,我们需要先来了解一下~ 海量数据都可以用bitmap来存储,因为占得内存小,速度也很快 我大概计算了一下~ 完全够:String类型512M 1byte 8个bit位 8个状态 512M1024byt…...
Element UI
Element ui 就是基于vue的一个ui框架,该框架基于vue开发了很多相关组件,方便我们快速开发页面。 官网: https://element.eleme.io/#/zh-CN 安装Element UI vue init webpack element(项目名)确认项目是否构建成功:进入到项目的根路径 执行 npm start 访问 h…...
②PROFINET转ModbusTCP, EtherCAT/Ethernet/IP/Profinet/ModbusTCP协议互转工业串口网关
EtherCAT/Ethernet/IP/Profinet/ModbusTCP协议互转工业串口网关https://item.taobao.com/item.htm?ftt&id822721028899 协议转换通信网关 PROFINET 转 Modbus TCP (接上一章) 配置使用 与 PROFINET 主站进行组态说明 这里介绍与西门子 PLC 的…...
python+Mosh网课笔记04
太久没写python代码了,学机器学习重新拾起python,笔记比较简陋。 参考:mosh python网课 一、导入同一文件夹下其他文件 first.py def swim():print("swim")def run():print("run")同一个文件夹下的second.py from f…...
【微服务】全面构建微服务监控体系:确保系统稳定与性能优化的关键
目录 引言一、微服务监控概述1.1 微服务监控的定义1.2 微服务监控的重要性1.3 监控的核心目标1.4 微服务监控的关键指标1.5 监控的策略 二、微服务监控的架构2.1 监控架构图2.2 架构组件2.3 监控架构示意图 三、微服务监控的工具3.1 工具概述3.2 Prometheus3.3 Grafana3.4 ELK …...
Gin框架操作指南08:日志与安全
官方文档地址(中文):https://gin-gonic.com/zh-cn/docs/ 注:本教程采用工作区机制,所以一个项目下载了Gin框架,其余项目就无需重复下载,想了解的读者可阅读第一节:Gin操作指南&#…...
鸿蒙系统 VS 安卓系统,谁将引领未来移动操作系统?
文章目录 1. 系统架构:微内核 vs 宏内核2. 设备生态:单设备 vs 全场景分布式3. 开发生态:安卓主导地位 vs 鸿蒙迅速崛起4. 性能与流畅度:安卓优化 vs 鸿蒙调度优势5. 安全性:Google 主导 vs 微内核高安全6. 市场影响力…...
PyTorch 中 functional.py 文件介绍
PyTorch PyTorch 是一个开源的机器学习库,广泛用于计算机视觉和自然语言处理等应用。它由 Facebook 的人工智能研究团队开发,并得到了许多研究机构和企业的支持。PyTorch 以其易用性、灵活性和强大的社区支持而受到欢迎。一些特点如下: 动态…...
SQL Injection | SQL 注入 —— 报错盲注
关注这个漏洞的其他相关笔记:SQL 注入漏洞 - 学习手册-CSDN博客 0x01:报错盲注 —— 理论篇 报错盲注(Error-Based Blind SQL Injection)是一种常见的 SQL 注入技术,适用于那些页面不会直接显示后端处理结果的查询方式…...
网络通信与并发编程(四)操作系统、进程理论、开启进程的两种方式
多道技术、进程理论 文章目录 多道技术、进程理论一、操作系统1.1操作系统1.2操作系统中的常见概念1.3操作系统的发展史 二、进程理论2.1同步、异步、阻塞、非阻塞2.2 进程的层次结构2.3 运行态、阻塞态、就绪态 三、开启进程的两种方式3.1使用Process创建进程的两种方式3.2 父…...
Java--集合(三)之vectorlinkedlisthashset结构
文章目录 0.架构图1.vector解析2.LinkedList分析2.1源码分析2.2迭代器遍历的三种方式 3.set接口的使用方法3.1基本使用说明3.2基本遍历方式3.3HashSet引入3.4数组链表模拟3.5hashset扩容机制3.6hashset源码解读3.7扩容*转成红黑树机制**我的理解 0.架构图 1.vector解析 和之前介…...
upload-labs Pass-04
upload-labs Pass-04 在进行测试前,先了解一下.htaccess文件 .htaccess文件 .htaccess是Apache网络服务器一个配置文件,当.htaccess文件被放置在一个通过Apache Web服务器加载的目录中,.htaccess文件会被Apache Web服务器软件检测并执行&…...
如何修改jupyter notebook的工作目录
1.生成配置文件: 打开Anaconda Prompt,输入如下命令 jupyter notebook --generate-config 用代码可以找到配置文件位置,如果没有填y可以生成。 2.修改配置文件: 修改jupyter_notebook_config.py的配置文件,需将c.Not…...
23种设计模式具体实现方法
提示:文章 文章目录 前言一、背景二、设计模式1、代理模式2、适配器模式2.1 总结 三、3.1 总结 前言 前期疑问: 本文目标: 一、背景 最近 二、设计模式 1、代理模式 参考的这篇文章,代理模式(Proxy) 同时这篇文章还引用了另…...
影墨·今颜保姆级教程:24GB显卡上跑FLUX.1-dev高清人像生成
影墨今颜保姆级教程:24GB显卡上跑FLUX.1-dev高清人像生成 1. 教程前言:从零开始掌握高端AI人像生成 你是否曾经被AI生成的人像那种"塑料感"所困扰?想要创作出具有电影质感、极致真实的时尚人像,却苦于没有合适的技术方…...
手机生成剧本杀软件2025推荐,创新剧情设计工具助力创作
手机生成剧本杀软件2025推荐,创新剧情设计工具助力创作随着剧本杀市场的蓬勃发展,越来越多的创作者和爱好者希望借助科技的力量来提升创作效率和质量。在2025年,一款名为量子探险AI剧本杀工坊的手机生成剧本杀软件脱颖而出,成为众…...
Qwen3.5-9B-AWQ-4bit视觉理解实战:10个高频办公场景的图文处理案例
Qwen3.5-9B-AWQ-4bit视觉理解实战:10个高频办公场景的图文处理案例 1. 认识这个强大的视觉助手 想象一下,当你面对一堆杂乱的文件、会议记录和产品图片时,有一个智能助手能帮你快速理解这些内容。这就是Qwen3.5-9B-AWQ-4bit能为你做的事情。…...
智能家居中枢:OpenClaw桥接Qwen3.5-9B实现语音控制图片检索
智能家居中枢:OpenClaw桥接Qwen3.5-9B实现语音控制图片检索 1. 为什么需要智能家居中的图片检索 每次家庭聚会后整理照片都让我头疼。手机相册里堆积着上千张照片,当亲友们围坐在客厅想回顾某次旅行时,"找那张在雪山前跳起来的合影&qu…...
jsTree状态管理插件终极指南:实现用户界面的持久化状态保存
jsTree状态管理插件终极指南:实现用户界面的持久化状态保存 【免费下载链接】jstree jquery tree plugin 项目地址: https://gitcode.com/gh_mirrors/js/jstree jsTree状态管理插件是提升用户体验的关键组件,能够自动保存和恢复树形结构的展开状态…...
OpenClaw备份方案:Qwen3-4B-Thinking自动化数据归档系统
OpenClaw备份方案:Qwen3-4B-Thinking自动化数据归档系统 1. 为什么需要自动化备份系统 作为一个长期与代码和数据打交道的开发者,我经历过太多次"数据灾难"——硬盘突然损坏导致项目丢失,误删重要文件后无法恢复,甚至…...
省考面试必看!初心教育不玩虚的,真实口碑+实战演练,上岸更稳
公考面试有多卷?千人争一岗,拼的不只是实力,更是选择!选对培训机构,能少走半年弯路;选不对,再努力也可能白费功夫 今天给所有进面考生避坑,推荐一家深耕公考面试多年、口碑拉满的宝藏…...
STM32单片机技术解析与应用实践
1. STM32的崛起背景与市场格局演变在2007年之前,单片机市场呈现"三足鼎立"的格局:以STC为代表的51系列8位机占据教学和工业控制领域,MSP430在低功耗应用场景表现突出,AVR和PIC则在特定细分市场各有所长。这些8位和16位单…...
说说 TCP 的三次握手:为什么是三次而不是两次或四次?
说说 TCP 的三次握手:为什么是三次而不是两次或四次?01. 前言:TCP 连接的“破冰仪式”02. 三次握手的完整流程2.1 流程图2.2 三个报文详解2.3 状态变化追踪03. 为什么需要三次握手?(核心问题)3.1 问题一&am…...
保姆级教程:用MS-Swift在本地电脑上跑通Qwen2.5-VL多模态大模型(附WebUI界面)
零基础玩转Qwen2.5-VL:手把手教你用MS-Swift搭建多模态AI实验室 想象一下,你的电脑不仅能理解你说的话,还能"看懂"你上传的照片——比如准确描述图片中的猫咪姿势,或者帮你分析设计稿的配色方案。这就是Qwen2.5-VL多模态…...
