中国DOS联盟论坛

中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --

联盟域名:www.cn-dos.net  论坛域名:www.cn-dos.net/forum
DOS,代表着自由开放与发展,我们努力起来,学习FreeDOS和Linux的自由开放与GNU精神,共同创造和发展美好的自由与GNU GPL世界吧!

游客:  注册 | 登录 | 命令行 | 会员 | 搜索 | 上传 | 帮助 »
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » [原创]一个批量比对文件内容的脚本
作者:
标题: [原创]一个批量比对文件内容的脚本 上一主题 | 下一主题
genteman
初级用户





积分 90
发帖 43
注册 2007-10-31
状态 离线
『楼 主』:  [原创]一个批量比对文件内容的脚本

该脚本仅能检测扩展名为ini的文件,有时间再完善可以检测所有文件。

脚本通过优化后的搜索算法,在进行大量文件比对时的效率相对较高。核心算法为为将要比对的文件创建索引,减少循环和比较的次数。文件索引为动态创建,并保存在数组中。
::update_ini.bat - 批量比对文件内容
::genteman - 2010-07-02 - CMD@WinXP Pro
::contact amdaround@163.com
@echo off
setlocal enabledelayedexpansion

echo 请输入已安装程序和更新软件包的完整路径,并尽量使输入的目录结构一致,以提高比较结果的准确性。

echo 请输入更新软件包路径
:input_patch_path
set /p patch_path=patch_path=
call :verify "%patch_path%"
if defined invalid goto input_patch_path
set invalid=


echo 请输入已安装程序路径
:input_source_path
set /p src_path=src_path=
call :verify "%src_path%"
if defined invalid goto input_source_path
set invalid=


call :init "%src_path%"


call :compare "%patch_path%"
pause & goto :EOF


:verify
if not exist "%~1" echo 路径无效,请重新输入 && set invalid=1
goto :EOF

:init
set n=0
for /R "%~1" %%i in (*.ini) do (
set filename=%%~ni
set char=!filename:~0,1!
set index[!char!][!n!]=%%~nxi
set srcpath[!char!][!n!]=%%~dpi
set /a n+=1
)
goto :EOF


:compare
for /R "%~1" %%i in (*.ini) do (
set filename=%%~ni
set char=!filename:~0,1!
set flag=0
set same=0
for /f "tokens=1,2 delims==" %%a in ('set index[!char!]') do (
if /i %%b==%%~nxi (
set flag=1
set n=%%a
set n=!n:~9,-1!
)
)
rem set index[%char%] | findstr /i /c:"%%~nxi" >nul
if !flag!==1 (
set srcpathh=srcpath[!char!][!n!]
set indexx=index[!char!][!n!]
for /f "tokens=1,2 delims==" %%l in ('set !srcpathh!') do (
set srcpath=%%m
)
set srcname=!srcpath!!%%~nxi
fc /lb400 /c /l /w "%%i" "!srcname!" | findstr /c:"找不到" >nul && set same=1
if !same!==0 echo !srcname!需要更新。
) else (
echo %%~nxi文件不存在,请从补丁包中复制。
)
)


附件 1: update_ini(ver2).zip (2010-7-2 20:19, 933 bytes,下载次数: 3)
2010-7-2 20:19
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复

请注意:您目前尚未注册或登录,请您注册登录以使用论坛的各项功能,例如发表和回复帖子等。


可打印版本 | 推荐给朋友 | 订阅主题 | 收藏主题



论坛跳转: