bat脚本12_比较2个文本文件中的以逗号分隔的字符串

该博客介绍如何用bat批处理脚本来比较两个文本文件中以逗号分隔的字符串,特别是针对包含文件名和MD5码的行。当发现相同文件名对应的MD5码不同时,脚本将输出不同MD5码的文件名到新的文件中。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >



1.概述
比较2个文本文件中的以逗号分隔的字符串。
第1个字符串是文件名字。
第2个字符串是Md5码。
当发现2个文件中同一个文件的MD5码不同时,打印出文件名。


2.实例
filename1.txt--------------
app/MyApp.lua,6B2E36FDDBAD045C2B36B459B71EC321
app/views/MainScene.lua,E77218DAE307CAF02C3F606FF6DE3550


filename2.txt--------------
app/MyApp.lua,6B2E36FDDBAD045C2B36B459B71EC321
app/views/MainScene.lua,E77218DAE307CAF02C3F606FF6DE3555


CheckMd5.bat-------------
@echo off
setlocal enabledelayedexpansion
for /f "delims=, tokens=1-2" %%i in (filename1.txt) do (
call:check "%%i" "%%j"
)
exit


:check
for /f "delims=, tokens=1-2" %%i in (filename2.txt) do (
if "%%i" == %1 (
if not "%%j" == %2 (
echo %%i>>filename3.txt
### 使用批处理脚本读取文本文件特定列并保存到新文件 为了实现这一目标,可以编写一个批处理脚本来逐行读取源文件的内容,并通过字符串操作提取所需的列。假设每一行的数据是以制表符或逗号分隔的,则可以通过以下方法来完成此任务。 #### 批处理脚本示例 下面是一个简单的例子,该脚本会从 `source.txt` 文件中读取数据,并将第三列的数据写入到一个新的文件 `output.txt` 中: ```batch @echo off setlocal enabledelayedexpansion rem 定义输入输出文件路径 set inputFile=source.txt set outputFile=output.txt rem 清空或创建输出文件 > "%outputFile%" echo. for /f "tokens=1,2,3 delims=," %%A in (%inputFile%) do ( rem 提取出第3列内容 set columnValue=%%C rem 将提取的结果追加到输出文件中 >>"%outputFile%" echo.!columnValue! ) pause ``` 在这个例子中,`tokens=1,2,3` 表明我们关心的是每行中的前三列;而 `delims=,` 则指定了这些列是由逗号 `,` 分割开来的。如果实际使用的分隔符不同(例如为空格或其他字符),则应相应调整 `delims=` 的参数[^1]。 请注意,上述代码适用于CSV格式或者其他由简单定界符分割的纯文本文件。对于更复杂的结构化文档(如Excel表格),可能需要借助其他工具或编程语言来进行解析和处理。 #### 处理固定宽度字段的情况 当面对具有固定宽度字段而非分隔符定义的文件时,可采用子串截取的方式获取所需列的信息。这里给出一段用于处理这种场景下的批量命令: ```batch @echo off setlocal enabledelayedexpansion rem 设置输入输出文件名 set inputfile=fixed_width_input.txt set outputfile=new_output.txt rem 初始化输出文件 >"%outputfile%" type nul rem 假设我们要抽取起始于位置8长度为7个字符的一段作为一列 for /F "usebackq tokens=* skip=0" %%L IN ("%inputfile%") DO ( SET line=%%L REM 获取指定范围内的子串 CALL :SUBSTRING "!line!" 8 7 colData REM 输出至新文件 ECHO(!colData!>>"%outputfile%" ) goto:eof :SUBSTRING str start length resultVar SETLOCAL ENABLEDELAYEDEXPANSION FOR /F "TOKENS=%~3 DELIMS==" %%I IN ("!%~1:*%~2=") DO ENDLOCAL&SET %4=%%I GOTO:eof ``` 这段程序展示了如何利用自定义函数 `:SUBSTRING` 来获得某一行内某个具体位置上的连续几个字符组成的“列”,并将它们存储在一个变量里以便后续使用。最后再把得到的新值存放到另一个文件当中去。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值