求助关于调用Beyond Compare 2的问题
我想调用BC2 来组个同步现在是可以同步了。。
但缺少个进度条。。
求大大们帮忙指导下!#include <ButtonConstants.au3>
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <ProgressConstants.au3>
#include <WindowsConstants.au3>
#include <Process.au3>
$soft = @WindowsDir &"/temp/bc3.exe"
$Vbc = @WindowsDir &"/temp/bc.txt"
#Region ### START Koda GUI section ### Form=
$Form1 = GUICreate("Bc2", 370, 287, 261, 202)
$Group1 = GUICtrlCreateGroup("", 8, 8, 353, 193)
$Input1 = GUICtrlCreateInput("D:\聊天冲浪", 121, 47, 121, 21)
$Button1 = GUICtrlCreateButton("浏览", 249, 44, 28, 28)
$Button2 = GUICtrlCreateButton("浏览", 249, 86, 28, 28)
$Input2 = GUICtrlCreateInput("E:\聊天冲浪", 121, 89, 121, 21)
$Progress1 = GUICtrlCreateProgress(56, 144, 262, 16)
GUICtrlCreateGroup("", -99, -99, 1, 1)
$Group2 = GUICtrlCreateGroup("", 8, 208, 353, 65)
$Button3 = GUICtrlCreateButton("对比", 88, 232, 75, 25)
$Button4 = GUICtrlCreateButton("关闭", 200, 232, 75, 25)
GUICtrlCreateGroup("", -99, -99, 1, 1)
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###
GUIRegisterMsg($WM_COMMAND, "WM_COMMAND")
GUIRegisterMsg($WM_SYSCOMMAND, "WM_SYSCOMMAND")
While 1
Sleep(1000)
WEnd
Func WM_COMMAND($hWnd, $Msg, $wParam, $lParam)
Local $iCtrl = BitAND($wParam, 0x0000FFFF)
Local $iCode = BitShift($wParam, 16)
Switch $hWnd
Case $Form1
Switch $iCtrl
Case $Button1
Ycliulan()
Case $Button2
Bdliulan()
Case $Button3
duibi()
Case $Button4
Exit
EndSwitch
EndSwitch
Return $GUI_RUNDEFMSG
EndFunc ;==>WM_COMMAND
Func WM_SYSCOMMAND($hWnd, $Msg, $wParam, $lParam)
Local $nID = BitAND($wParam, 0x0000FFFF)
Switch $nID
Case 0xf060
If $hWnd = $Form1 Then
Exit
Else
GUIDelete($hWnd)
EndIf
EndSwitch
EndFunc ;==>WM_SYSCOMMAND
Func duibi()
$Yuancheng = GUICtrlRead($Input1)
$bendi = GUICtrlRead($Input2)
If FileExists($bendi) <> 1 Then
DirCreate($bendi)
EndIf
Azbc()
$Bctxt = FileOpen($Vbc, 2)
FileWriteLine ($Bctxt,"load "& $Yuancheng &" "& $Bendi &"")
FileWriteLine ($Bctxt,"expand all")
FileWriteLine ($Bctxt,"select rt.orphan")
FileWriteLine ($Bctxt,"delete rt")
FileWriteLine ($Bctxt,"option confirm:yes-to-all")
FileWriteLine ($Bctxt,"select lt.newer.files lt.older.files lt.orphan lt.diff.files")
FileWriteLine ($Bctxt,"copy lt->rt")
FileClose ($Bctxt)
_rundos ("del /f /s /q %temp%\*.*")
sleep(2000)
Run ($soft &" @"& $Vbc &" /silent")
While ProcessExists("BC3.exe") <> 0
Sleep(3000)
WEnd
Scbc()
EndFunc
Func Azbc()
FileInstall("bc3.exe",@WindowsDir &"/temp/bc3.exe")
FileInstall("bc3Key.txt",@WindowsDir &"/temp/BC3Key.txt")
EndFunc
Func Scbc()
FileDelete(@WindowsDir &"/temp/bc3.exe")
FileDelete(@WindowsDir &"/temp/Bc3key.txt")
FileDelete($Vbc)
EndFunc
Func Ycliulan()
$ll=FileSelectFolder("浏览","")
If FileExists($ll) Then
GUICtrlSetData($Input1,$ll)
EndIf
EndFunc
Func Bdliulan()
$ll1=FileSelectFolder("浏览","")
If FileExists($ll1) Then
GUICtrlSetData($Input2,$ll1)
EndIf
EndFunc
所需Beyond Compare 在附件里! 回复 1# 49666684
建议在主界面增加个'进度条', 在以下循环中改写进度条的值.
While ProcessExists("BC3.exe") <> 0
Sleep(3000)
WEnd
用 DirGetSize 目标文件夹及源文件夹的字节大小, 按其对比值来改写进度条 也正在研究用文件数量来做进度条
问题是。如果源路径设置吃FTP的话。怎么样才能获取FTP上的文件数量呢? 囧了 。没有人指导下么? 在 论坛里搜到一个 遍历搜索FTP文件,出现问题 的帖子
根据帖子修改了 下
但貌似比较繁琐,,,,请大大们。帮忙指导下 !!!谢谢#include <FTPEx.au3>
#include <Array.au3>
$server = '192.168.0.2';服务器
$name = 'Anonymous' ;用户名
$pass = '' ;密码
$Port = '21' ;端口
$path = "\soft\" ;路径
Global $Gs,$ZGs
ftp($server,$name,$pass,$port,$path)
MsgBox (0,0,$gs)
Func ftp($server,$name,$pass,$port,$path)
$Open = _FTP_Open('MyFTP');打开一个FTP会话
$Conn = _FTP_Connect($Open,$server,$name,$pass,0,$port);连接到ftp服务器
_FTP_DirSetCurrent($Conn, $path)
$aFile = _FTP_ListToArrayEx($Conn,0,0);列目录(0=文件和目录,1=目录,2=文件)(格式0=mm/dd/yyyy,1=yyyy/mm/dd)
;~ _ArrayDisplay($aFile)
$Gs = $aFile
for $i = 1 to $aFile
If $aFile[$i] = 16 And $aFile[$i] == "." Then
$Gs = $Gs - 1
ElseIf $aFile[$i] = 16 And $aFile[$i] == ".." Then
$Gs = $Gs - 1
ElseIf $aFile[$i] = 16 And $aFile[$i]<>"." And $aFile[$i]<>".." Then
$Gs = $Gs - 1
EndIf
Next
$gs = $gs + $ZGs
For $j = 1 To $aFile
If $aFile[$j] = 16 And $aFile[$j]<>"." And $aFile[$j]<>".." Then
$path = "\soft\"
$path=$path&$aFile[$j]&"\"
;~ MsgBox (0,1,$path)
Zmu($server,$name,$pass,$port,$path)
EndIf
Next
$Ftpc = _FTP_Close($Open);关闭 _FTP_Open 打开的回话
EndFunc
Func Zmu($server,$name,$pass,$port,$path)
$Open = _FTP_Open('MyFTP');打开一个FTP会话
$Conn = _FTP_Connect($Open,$server,$name,$pass,0,$port);连接到ftp服务器
_FTP_DirSetCurrent($Conn, $path)
$aFile = _FTP_ListToArrayEx($Conn,0,0);列目录(0=文件和目录,1=目录,2=文件)(格式0=mm/dd/yyyy,1=yyyy/mm/dd)
;~ _ArrayDisplay($aFile)
;~ MsgBox(0,"$aFile[$i]文件名",$aFile)
$ZGs = $aFile
for $i = 1 to $aFile
If $aFile[$i] = 16 And $aFile[$i] == "." Then
$ZGs = $ZGs - 1
ElseIf $aFile[$i] = 16 And $aFile[$i] == ".." Then
$ZGs = $ZGs - 1
ElseIf $aFile[$i] = 16 And $aFile[$i]<>"." And $aFile[$i]<>".." Then
$ZGs = $ZGs - 1
EndIf
Next
$gs = $gs + $ZGs
For $j = 1 To $aFile
If $aFile[$j] = 16 And $aFile[$j]<>"." And $aFile[$j]<>".." Then
$Zpath=$path&$aFile[$j]&"\"
Zmu($server,$name,$pass,$port,$zpath)
EndIf
Next
$Ftpc = _FTP_Close($Open);关闭 _FTP_Open 打开的回话
EndFunc
没有人来指导指导么? 回复 7# 49666684
要遍历FTP?
不如设置BC 同步文件时记录下详细的操作日志.
AU3脚本反复读取此文件,用正则处理获取'文件数'来响应进度.
虽然麻烦, 但比遍历FTP的效率高百倍吧? 貌似有点深奥~ 下面是个日志文件的部分内容, 甚至可以提取到文件名, 它是每成功对比一个文件后立即写入到日志中的.
如果只是想获取文件数, 读取文件的总行数后减去2.....这深不到哪去.
BC的设置: 工具 -> 选项 -> 日志 -> 全勾上, 并设置好日志输出的路径即可.
2012-07-08 16:01:05用户名:PC--20120524DOD\Administrator
2012-07-08 16:01:05加载比较:Z:\单机游戏\神话时代 <-> E:\TDDOWNLOAD
2012-07-08 16:01:24复制Z:\单机游戏\神话时代\Acommlog.txt到E:\TDDOWNLOAD
2012-07-08 16:01:24复制Z:\单机游戏\神话时代\1028\dwintl.dll到E:\TDDOWNLOAD\1028
2012-07-08 16:01:24复制Z:\单机游戏\神话时代\1028\msiloadr.bin到E:\TDDOWNLOAD\1028
2012-07-08 16:01:24复制Z:\单机游戏\神话时代\1028\webloadr.bin到E:\TDDOWNLOAD\1028
2012-07-08 16:01:24复制Z:\单机游戏\神话时代\aom.exe到E:\TDDOWNLOAD
2012-07-08 16:01:24复制Z:\单机游戏\神话时代\1029\dwintl.dll到E:\TDDOWNLOAD\1029
2012-07-08 16:01:24复制Z:\单机游戏\神话时代\autopatcher.exe到E:\TDDOWNLOAD
2012-07-08 16:01:24复制Z:\单机游戏\神话时代\1030\dwintl.dll到E:\TDDOWNLOAD\1030
2012-07-08 16:01:24复制Z:\单机游戏\神话时代\binkw32.dll到E:\TDDOWNLOAD 那问题是 同步完了才 输出的日志啊。 回复 10# 49666684
我用的是 BC 3, 操作日志是实时输出的.
刚试了 BC 2 , 也是实时输出的. 但 BC 2 日志设置有所不同:
工具栏选"查看" -> 程序日志 -> 详细日志最后选 '写入到..." 设置好输出路径. 小弟愚钝 BC是啥 回复 12# ooxxgod
你这家伙, 近来'疯狂'跟帖, 但其实都没仔细阅读帖子内容吧?
你等级也上来了, 再这样乱说话, 最终丢也是你自己的脸哦!
你看下楼主的标题? 再看下他1楼的第一句话?
希望你引此为鉴.
(因为年纪大点,所以有点啰嗦, 看不顺眼的, 当作没看见即可.) 我现在也 换成BC3了。呵呵。在研究下。。谢谢楼上。。
页:
[1]