Beyond Compare 命令行生成目录下所有文件比对的Html网页report
MAC环境下,使用Beyond Compare命令行生成两个文件夹差异的html,按目录递归生成。
#1. 创建compare
#2. 创建compare/old
#3. compare/new
#4. sh tree.sh ~/Desktop/compare
#5. 生成 ~/Desktop/report #环境初始化
function init()
{
echo "#########环境初始化#########################" WORK_DIR=$(cd $(dirname $0); pwd)
#echo $WORK_DIR BasePath=$1
BasePathLength=${#BasePath} #命令行是否/结尾问题
FINAL=${BasePath:0-1}
#echo "FINAL:"$FINAL
#echo "BasePath...:"$BasePath
if [ ${FINAL} == "/" ]; then
#命令行是/结尾
BasePath=${BasePath:0:$BasePathLength-1}
#echo "BasePath......:"$BasePath
BaseOldPath="$1old"
BaseNewPath="$1new"
echo "YES"
else
#命令行否/结尾
BaseOldPath="$1/old"
BaseNewPath="$1/new"
echo "NO"
fi BaseReportPath=$WORK_DIR/report #生成report目录
if [ ! -d $BaseReportPath ]; then
echo "新建目录"
mkdir $BaseReportPath
else
echo "目录存在,重新生成"
rm -rf $BaseReportPath
mkdir $BaseReportPath
fi #检查目录
if [ -d $BaseReportPath ]; then
echo "report目录创建成功"
else
echo "report目录创建失败,退出"
exit
fi BasePatchPath=$WORK_DIR/diff_to_html echo "强制写入比对配置文件" echo "text-report layout:side-by-side &
options:display-all,line-numbers,display-context &
output-to:%3 output-options:html-color %1 %2" > $BasePatchPath if [ -f $BasePatchPath ]; then
echo "临时写入比对配置文件成功"
else
echo "临时写入比对配置文件失败,退出"
exit
fi BaseEmptyPath=$WORK_DIR/empty
echo "" > $BaseEmptyPath echo "##########路径参数###########"
echo "BasePath...............:$BasePath"
echo "BaseOldPath............:$BaseOldPath"
echo "BaseNewPath............:$BaseNewPath"
echo "BaseReportPath.........:$BaseReportPath"
echo "BasePatchPath..........:$BasePatchPath"
echo "BaseEmptyPath..........:$BaseEmptyPath"
echo "#####################" echo "#########环境初始化 ok############################" } #目录检查
# BasePath...............:~/Desktop/compare
# BaseOldPath............:~/Desktop/compare/old
# BaseNewPath............:~/Desktop/compare/new function checkCompareDir(){ echo "##############checkCompareDir start########################"
if [ ! -d $BasePath ]; then
echo $BasePath"目录不存在,请检查!"
exit 0
fi if [ ! -d $BaseOldPath ]; then
echo $BaseOldPath"子目录不存在,请检查!"
exit 0
fi if [ ! -d $BaseNewPath ]; then
echo $BaseNewPath"子目录不存在,请检查!"
exit 0
fi echo "##############checkCompareDir end########################" } function listFiles()
{
#1st param, the dir name
for file in `ls $1`;
do
#echo "path....:$1/$file"
if [ -d "$1/$file" ]; then
# echo "$2$file"
# echo "$1/$file"
#递归 listFiles "$1/$file"
else #比较文件A
compareFileAPath=$1/$file
#echo "compareFileAPath..............:$compareFileAPath"
if [[ "${compareFileAPath}" =~ $BaseNewPath ]]; then
#echo "compareFileAPath is new"
compareFileBPath=$compareFileAPath
compareFileAPath=${compareFileBPath/$BaseNewPath/$BaseOldPath} if [ ! -d $compareFileAPath ]; then
echo "A path不存在"
fulldir=$1
#临时html路径,compareFileAPath替换BaseOldPath赋值BaseReportPath
tempHtmlPath=${compareFileBPath/$BaseNewPath/$BaseReportPath}
# echo "tempHtmlPath....................:$tempHtmlPath" #html文件路径,tempHtmlPath拼接.html
htmlPath=$tempHtmlPath.html
# echo "htmlPath......................:$htmlPath" #替换生成Html文件对应的目录
htmldir=${fulldir/$BaseNewPath/$BaseReportPath}
#echo "htmldir......................:$htmldir" #如果Html文件夹不存在,创建对应文件夹
if [ ! -d $htmldir ]; then
#echo "create.....:$htmldir"
mkdir $htmldir
fi
fi else echo "#old############"
fulldir=$1
# echo "fulldir..............:$fulldir" #比较文件B,compareFileAPath替换BaseOldPath赋值BaseNewPath
compareFileBPath=${compareFileAPath/$BaseOldPath/$BaseNewPath}
# echo "compareFileBPath..............:$compareFileBPath" #临时html路径,compareFileAPath替换BaseOldPath赋值BaseReportPath
tempHtmlPath=${compareFileBPath/$BaseNewPath/$BaseReportPath}
# echo "tempHtmlPath....................:$tempHtmlPath" #html文件路径,tempHtmlPath拼接.html
htmlPath=$tempHtmlPath.html
# echo "htmlPath......................:$htmlPath" #替换生成Html文件对应的目录
htmldir=${fulldir/$BaseNewPath/$BaseReportPath}
# echo "htmldir......................:$htmldir" #如果Html文件夹不存在,创建对应文件夹
if [ ! -d $htmldir ]; then
echo "create.....:$htmldir"
mkdir $htmldir
fi
fi echo "#################file compare start#####################" if [ -f $compareFileBPath ]; then
#echo "compare aciton...B存在:$compareFileBPath"
if [ ! -f $compareFileAPath ]; then
echo "#################NEW#####################"
bcompare -silent @$BasePatchPath $BaseEmptyPath $compareFileBPath $htmlPath
else
#A存在
echo "#################UPDATE#####################"
#echo "compare aciton...$compareFileAPath"
# echo "compareFileAPath.......:$compareFileAPath"
# echo "compareFileBPath.......:$compareFileBPath"
if [[ "${compareFileAPath}" =~ $BaseOldPath ]]; then
bcompare -silent @$BasePatchPath $compareFileAPath $compareFileBPath $htmlPath
fi
fi
fi
echo "###################file compare end#########################" fi
done
} #清理函数
function clear(){
#echo "删除比对配置文件"
rm -rf $BasePatchPath
rm -rf $BaseEmptyPath
} #######main run init $1 checkCompareDir listFiles $BasePath clear
Beyond Compare 命令行生成目录下所有文件比对的Html网页report的更多相关文章
- 利用os、hash模块生成目录下所有文件的md5
hashlib用于对字符串或者文件进行加密. 使用方法1: hashlib.md5('str').hexdigest() 使用MD5对str进行加密,使用hexdigest(),16进制的方式打印 ...
- day1 diff命令递归比较目录下的文件
一.diff实战 (1)递归比较文件夹下所有的文件及目录的不同 diff --brief -Nr dir1/ dir2/ Reference ...
- Jmeter在非GUI(命令行)模式下生成测试报告
根据各大招聘网站上的需求来看,熟悉Jmeter做性能测试已经几乎成为必要条件了. 那么今天在这个给大家安利一波,怎么使用Jmeter在非GUI(命令行)模式下生成测试报告呢?? 条件准备: 1.Jme ...
- visual studio使用dos命令在生成项目时复制文件到指定目录
本人使用软件:vs2015 拷贝“项目1”的 bin目录 下, 项目配置的名称(“Release”,“Debug”)目录下,所有内容到“项目2”输出目录(存在直接覆盖): xcopy $(Soluti ...
- thinkphp命令行生成模型类
thinkphp命令行生成模型类 当你需要创建大量的模型类的时候,不妨考虑下命令行生成,可以快速创建模型类. 在windows下面,使用Win+R输入cmd进入命令控制台,切换到项目根目录(也就是th ...
- 《Entity Framework 6 Recipes》中文翻译系列 (40) ------ 第七章 使用对象服务之从跟踪器中获取实体与从命令行生成模型(想解决EF第一次查询慢的,请阅读)
翻译的初衷以及为什么选择<Entity Framework 6 Recipes>来学习,请看本系列开篇 7-5 从跟踪器中获取实体 问题 你想创建一个扩展方法,从跟踪器中获取实体,用于数 ...
- Linux常用基础命令整理:关机命令、查看目录下文件命令等
Linux常用基础命令整理:关机命令.查看目录下文件命令等 整理了一些Linux常用基础命令,欢迎指正. 首先记住四个热键,学会这四个键,收益一辈子. Tab按键---命令补齐功能Ctrl+c按键-- ...
- 用OpenSSL命令行生成证书文件
用OpenSSL命令行生成证书文件 1.首先要生成服务器端的私钥(key文件): openssl genrsa -des3 -out server.key 1024 运行时会提示输入密码,此密码用于加 ...
- Windows 命令行切换目录
Windows 命令行切换目录 特别注意:切换到其它盘符不需要 cd 命令 1. 切换到 C 盘根目录 打开终端 cmd 后,输入cd C:\(一定要加上后面的反斜扛) 2.切换到 C 盘子目录 打开 ...
随机推荐
- 第二天-while循环 格式化输出 运算符 编码
一.while循环 while 条件: 语句块(循环体) #判断条件是否成立,若成立执行循环体,然后再次判断条件...直到不满足跳出循环 else: 当条件不成立的时候执行这里,和break没 ...
- 004bean作用域
1.Singleton(单例) 2.Prototype(原型)---->每次注入.通过Spring应用上下文获取,都会重新创建 @Scope(ConfigurableBeanFactory ...
- Install dotNet Core on Mac
1. 按照官方页面进行安装 https://www.microsoft.com/net/core#macos 2. 在运行"brew link --force openssl" 时 ...
- Java快速入门-04-Java.util包简单总结
学Java的程序员,lang包和util包最好是要过一遍的. 建议大家都序下载一个离线版开发文档,查阅非常方便,我给大家提供一个中文版 jdk1.8 离线文档,查看:JAVA - JDK 1.8 AP ...
- QQ群文件下载速度慢-解决办法
QQ群文件下载速度慢-解决办法 本方法是本人亲测测试出来的,特此和大家分享 没有效果让你打我 解决方法 1.打开[手机版 QQ] 2.进入群文件,找到需要下载文件 3.[分享],先点击[发给好友],选 ...
- Android 虚拟多开系列一——技术调研
参考链接:http://weishu.me Github源码链接: 国内Xposed框架源码链接 VirtualAp ...
- restful知识点之五解析器_响应器_分页器
解析器 request.post:当数据时content-type urlencoded类型时才有数据 当content-type:是formdata时需要从request.body里取数据 requ ...
- 毕向东_Java基础视频教程第20天_IO流(5~6)
第20天-05-IO流(文件列表一) static File[] listRoots() List the available filesystem roots. String[] list() Re ...
- hibernate简单入门教程(一)---------基本配置
应用级别所以很粗浅 首先介绍一下hibernate框架: 1.优秀的持久化(通俗讲把内存上的短时间运行信息存储在持久化硬盘上)框架. 2.作用于持久层,因为没什么侵入性,所以同样适用于其他层面上的存储 ...
- Project Euler 44: Find the smallest pair of pentagonal numbers whose sum and difference is pentagonal.
In Problem 42 we dealt with triangular problems, in Problem 44 of Project Euler we deal with pentago ...