找回密码
 加入
搜索
楼主: 131738

[原创] 更新 AutoIt v3.3.14.5 (2) 中文安装包

 火...   [复制链接]
发表于 2010-12-9 08:00:21 | 显示全部楼层
好东西,谢谢!
发表于 2010-12-9 02:01:08 | 显示全部楼层
谢谢 各位大大的努力 我收下了
发表于 2010-12-9 00:06:10 | 显示全部楼层
已经下载收藏呢,非常感谢
发表于 2010-12-8 22:52:32 | 显示全部楼层
新人出来驾到,先支持后下载~
发表于 2010-12-8 17:47:59 | 显示全部楼层
收藏备用啦,谢谢楼主
 楼主| 发表于 2010-12-7 23:20:43 | 显示全部楼层
回复 473# afan


    OK !!! 谢谢!!!!
发表于 2010-12-7 22:38:42 | 显示全部楼层
什么意义,看不懂国文?还是。。。
131738 发表于 2010-12-7 19:57


呵呵,原来支持中文搜索的.看到第一版的了.
发表于 2010-12-7 22:09:14 | 显示全部楼层
回复 472# 131738


    已经按前辈的思路修改了~ :)
#include <Array.au3>
#include <File.au3>
#include <ButtonConstants.au3>
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>

Global $BakDir = 'E:\htm测试\html备份\'
Global $LogFile = @ScriptDir & '\替换记录.txt'
Global $filesl[1] ;拖入的文件数组
Global $File_Path, $File_Array

$Form1_1 = GUICreate("Form1", 633, 105, 2, 2, BitOR($WS_POPUP, $WS_BORDER), _
                BitOR($WS_EX_DLGMODALFRAME, $WS_EX_TOPMOST, $WS_EX_TOOLWINDOW, $WS_EX_ACCEPTFILES)) ;$WS_EX_ACCEPTFILES支持拖放
$Button1 = GUICtrlCreateButton("文 本 替 换", 520, 80, 105, 20)
$Button2 = GUICtrlCreateButton("编 码 替 换", 350, 80, 105, 20)
$Button3 = GUICtrlCreateButton("退    出", 150, 80, 105, 20)

$Label1 = GUICtrlCreateLabel("搜索字符", 5, 30, 52, 17)
$Label2 = GUICtrlCreateLabel("替换字符", 5, 57, 52, 17)
$Label3 = GUICtrlCreateLabel("文件地址", 5, 7, 52, 17)
$Label4 = GUICtrlCreateLabel("当前完成", 5, 85, 65, 17)

$Input3 = GUICtrlCreateInput("输入文件路径,或直接拖入该文件至此", 62, 5, 560, 17)
GUICtrlSetState(-1, $GUI_DROPACCEPTED)
$Input1 = GUICtrlCreateInput("", 62, 28, 560, 20)
$Input2 = GUICtrlCreateInput("", 62, 56, 560, 20)
GUICtrlSetState(-1, $GUI_FOCUS)
$Input4 = GUICtrlCreateInput("", 62, 82, 80, 17)
GUISetState(@SW_SHOW)

While 1
        $nMsg = GUIGetMsg()
        Switch $nMsg
                Case $GUI_EVENT_CLOSE
                        Exit
                Case $GUI_EVENT_DROPPED ;拖入文件
                        Local $mouse = GUIGetCursorInfo($Form1_1);获取相对于 GUI 窗口的鼠标光标位置,返回包含光标信息的 5 元素数组
                        ;发送命令到指定控件,$mouse[4]=光标下控件ID,'GetSelected'=返回编辑框选定的文本
                        Local $_str = ControlCommand($Form1_1, '', $mouse[4], 'GetSelected', '');返回拖放文件的完整路径+文件名
                        GUICtrlSetData($Input3, $_str);完整路径+文件名写入地址框
                Case $Button1 ;文本替换
                        _Replacement(GUICtrlRead($Input3));读取路径作为传递的参数
                Case $Button2 ;编码替换
                        _format(GUICtrlRead($Input3));读取路径作为传递的参数
                Case $Button3 ;退出
                        Exit
        EndSwitch
WEnd
Func _format($WorkDir) ;编码替换
        If $WorkDir = "" Or $WorkDir = "输入文件路径,或直接拖入该文件至此" Then Return MsgBox(0, 0, "无路径!", 1)
        Local $szDrive, $szDir, $szFName, $szExt
        #Region 处理 目录文件 开始
        Local $File_Path2 = _PathSplit($WorkDir, $szDrive, $szDir, $szFName, $szExt);完整路径拆分
        Local $File = $File_Path2[1] & $File_Path2[2] & 'AutoIt3 TOC.hhc'
        Local $str = String(FileRead($File));返回表达式的字符串结果
        $str = StringRegExpReplace($str, '(?<=\w)%20(?=\w)', ' ')
        If Not @error And @extended > 0 Then
                FileMove($File, $File & '.bak');移动文件为备份文件
                FileWrite($File, $str)
        EndIf
        #EndRegion 处理 目录文件 开始
        Local $ts = TimerInit() ;返回一个时间戳(开始计算耗时)
        Local $File_Array = _FileSearchToArray($WorkDir, '*.htm') ;遍历搜索*.htm文件(包括子目录)到数组 $File_Array[$i]=完整路径+文件名 $i 从 1 开始循环
        If @error Then Return MsgBox(4096, '错误', '未搜索到文件 ')
        Local $FR, $thStr, $FLog1 = '', $FLog2 = '', $x1 = 0, $x2 = 0

        For $i = 1 To $File_Array[0]
                $FR = String(FileRead($File_Array[$i]))

                Local $ChangeBj1 = 0, $ChangeBj2 = 0 ;修改标记
                $FR = StringRegExpReplace($FR, '(?<=h1>)Function Reference(?=</h1>)', '函 数 参 考')
                If Not @error And @extended > 0 Then $ChangeBj1 = 1
                $FR = StringRegExpReplace($FR, '(?<=b>)Parameters(?=</b>)', '参 数')
                If Not @error And @extended > 0 Then $ChangeBj1 = 1
                $FR = StringRegExpReplace($FR, '(?<=b>)Return Value(?=</b>)', '返 回 值')
                If Not @error And @extended > 0 Then $ChangeBj1 = 1
                $FR = StringRegExpReplace($FR, '(?<=b>)Remarks(?=</b>)', '备 注')
                If Not @error And @extended > 0 Then $ChangeBj1 = 1
                $FR = StringRegExpReplace($FR, '(?<=b>)Related(?=</b>)', '相 关 函 数')
                If Not @error And @extended > 0 Then $ChangeBj1 = 1
                $FR = StringRegExpReplace($FR, '(?<=b>)Example(?=</b>)', '函 数 示 例')
                If Not @error And @extended > 0 Then $ChangeBj1 = 1
                $FR = StringRegExpReplace($FR, '(?<=valign="top">)Success(?=:</td>)', '成 功')
                If Not @error And @extended > 0 Then $ChangeBj1 = 1
                $FR = StringRegExpReplace($FR, '(?<=valign="top">)Failure(?=:</td>)', '失 败')
                If Not @error And @extended > 0 Then $ChangeBj1 = 1
                
                If $ChangeBj1 Then ;有汉化字符
                        $FLog1 &= $File_Array[$i] & @CRLF ;做输出记录
                        $x1 += 1
                EndIf
                ;--------以上先替换这些基本汉化内容
                
                $thStr = StringRegExpReplace($FR, '(?<=charset=)iso-8859-1(?=")|(?<=charset=)UTF-8(?=")', 'GB2312', 1)
                If Not @error And @extended > 0 Then ;有修改编码字符
                        $ChangeBj2 = 1
                        $FLog2 &= $File_Array[$i] & @CRLF ;做输出记录
                        $x2 += 1
                EndIf
                ;--------以上替换编码格式字符内容

                If $ChangeBj1 Or $ChangeBj2 Then ;有修改记录
                        FileMove($File_Array[$i], $BakDir & StringRegExpReplace($File_Array[$i], '.+?\\html\\', ''), 9) ;备份文件及目录结构
                        FileWrite($File_Array[$i], $thStr) ;创建ANSI格式文件
                        GUICtrlSetData($Input4, $x1 & ' - ' & $x2);实时显示修改数
                EndIf
        Next
        Local $te = Round(TimerDiff($ts))
        FileDelete($LogFile)
        Local $textOut = '耗时 ' & $te & ' 毫秒' & @CRLF & @CRLF
        If $FLog1 <> '' Then $textOut &= '汉化基本字符文件 ' & $x1 & ' 个,以下为记录:' & @CRLF & $FLog1 & @CRLF & @CRLF
        If $FLog2 <> '' Then $textOut &= '修改为GB2312 编码 ANSI格式的文件 ' & $x2 & ' 个,以下为记录:' & @CRLF & $FLog2 & @CRLF
        FileWrite($LogFile, $textOut)
        ShellExecute($LogFile)
        GUICtrlSetState($Button2, $GUI_DISABLE);禁用 编码转换 按钮
EndFunc   ;==>_format

Func _Replacement($WorkDir) ;文本替换
        If $WorkDir = "" Or $WorkDir = "输入文件路径,或直接拖入该文件至此" Then Return MsgBox(0, 0, "无路径!", 1)
        GUICtrlSetData($Input4, "");清空修改数
        Local $Count = 0
        Local $Original = GUICtrlRead($Input1)
        Local $replace = GUICtrlRead($Input2)
        ;遍历搜索*.htm文件(包括子目录)到数组 $File_Array[$i]=完整路径+文件名 $i 从 1 开始循环:
        Local $File_Array = _FileSearchToArray($WorkDir, '*.htm')
        For $i = 1 To $File_Array[0]
                $retval = _ReplaceStringInFile($File_Array[$i], $Original, $replace, 0, 1)
                If Not @error Then
                        $Count += $retval
                        GUICtrlSetData($Input4, $Count);实时显示修改数
                EndIf
        Next
        MsgBox(0, 0, "完成。已替换 " & $Count & " 处。")
        GUICtrlSetData($Input1, "")
        GUICtrlSetData($Input2, "")
EndFunc   ;==>_Replacement

Func _FileSearchToArray($sPath, $sFilter = '*.*') ;遍历搜索*.htm文件(包括子目录)到数组
        If StringRight($sPath, 1) <> '\' Then $sPath &= '\' ;路径变量加 "" 结尾
        If Not StringInStr(FileGetAttrib($sPath), 'D') Then Return SetError(1, 0, 0) ;无此目录,则返回错误
        If StringReplace($sFilter, ' ', '') = '' Then $sFilter = '*';文件类型变量为空,则变量='*'
        Local $sOUT = @ScriptDir & '\$$$_____temp_filelist.txt'
        FileClose(FileOpen($sOUT, 2));清空记录文本
        RunWait(@ComSpec & ' /c ' & 'dir "' & $sPath & $sFilter & '" /a:-d /b /s > ' & $sOUT, '', 0);写记录文件
        Local $FR = FileRead($sOUT);读记录文件
        FileDelete($sOUT);删除记录文件
        Local $afilelist = StringRegExp('1' & @CRLF & $FR, '\V+', 3);返回全局匹配的数组
        If @error Or UBound($afilelist) = 1 Then Return SetError(2, 0, 0) ;该目录无文件
        $afilelist[0] = UBound($afilelist) - 1
        Return $afilelist
EndFunc   ;==>_FileSearchToArray
 楼主| 发表于 2010-12-7 20:35:24 | 显示全部楼层
回复 463# afan

又要麻烦你了,下面脚本是希望在换码的同时执行多项替换,结果不行。。。
注释 ;单项测试通过 是指另写个脚本,一次只替换一个语句,正则表达式正确。。。
先前都是用文本替换脚本分次完成的,请看看。。。谢谢!!!
#include <Array.au3>
#include <File.au3>
#include <ButtonConstants.au3>
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>

Global $BakDir = 'E:\htm测试\html备份\'
Global $LogFile = @ScriptDir & '\替换记录.txt'
Global $filesl[1] ;拖入的文件数组
Global $File_Path, $File_Array

$Form1_1 = GUICreate("Form1", 633, 105, 2, 2, BitOR($WS_POPUP, $WS_BORDER), _
                BitOR($WS_EX_DLGMODALFRAME, $WS_EX_TOPMOST, $WS_EX_TOOLWINDOW, $WS_EX_ACCEPTFILES)) ;$WS_EX_ACCEPTFILES支持拖放
$Button1 = GUICtrlCreateButton("文 本 替 换", 520, 80, 105, 20)
$Button2 = GUICtrlCreateButton("编 码 替 换", 350, 80, 105, 20)
$Button3 = GUICtrlCreateButton("退    出", 150, 80, 105, 20)

$Label1 = GUICtrlCreateLabel("搜索字符", 5, 30, 52, 17)
$Label2 = GUICtrlCreateLabel("替换字符", 5, 57, 52, 17)
$Label3 = GUICtrlCreateLabel("文件地址", 5, 7, 52, 17)
$Label4 = GUICtrlCreateLabel("当前完成", 5, 80, 65, 17)

$Input3 = GUICtrlCreateInput("输入文件路径,或直接拖入该文件至此", 62, 5, 560, 17)
GUICtrlSetState(-1, $GUI_DROPACCEPTED)
$Input1 = GUICtrlCreateInput("", 62, 28, 560, 20)
$Input2 = GUICtrlCreateInput("", 62, 56, 560, 20)
GUICtrlSetState(-1, $GUI_FOCUS)
$Input4 = GUICtrlCreateInput("", 62, 82, 50, 17)
GUISetState(@SW_SHOW)

While 1
        $nMsg = GUIGetMsg()
        Switch $nMsg
                Case $GUI_EVENT_CLOSE
                        Exit
                Case $GUI_EVENT_DROPPED ;拖入文件
                        Local $mouse = GUIGetCursorInfo($Form1_1);获取相对于 GUI 窗口的鼠标光标位置,返回包含光标信息的 5 元素数组
                        ;发送命令到指定控件,$mouse[4]=光标下控件ID,'GetSelected'=返回编辑框选定的文本
                        Local $_str = ControlCommand($Form1_1, '', $mouse[4], 'GetSelected', '');返回拖放文件的完整路径+文件名
                        GUICtrlSetData($Input3, $_str);完整路径+文件名写入地址框
                Case $Button1 ;文本替换
                        _Replacement(GUICtrlRead($Input3));读取路径作为传递的参数
                Case $Button2 ;编码替换
                        _format(GUICtrlRead($Input3));读取路径作为传递的参数
                Case $Button3 ;退出
                        Exit
        EndSwitch
WEnd
Func _format($WorkDir) ;编码替换
        If $WorkDir = "" Or $WorkDir = "输入文件路径,或直接拖入该文件至此" Then Return MsgBox(0, 0, "无路径!", 1)
        Local $szDrive, $szDir, $szFName, $szExt
        #Region 处理 目录文件 开始
        Local $File_Path2 = _PathSplit($WorkDir, $szDrive, $szDir, $szFName, $szExt);完整路径拆分
        Local $File = $File_Path2[1] & $File_Path2[2] & 'AutoIt3 TOC.hhc'
        Local $str = String(FileRead($File));返回表达式的字符串结果
        $str = StringRegExpReplace($str, '(?<=\w)%20(?=\w)', ' ')
        If Not @error And @extended > 0 Then
                FileMove($File, $File & '.bak');移动文件为备份文件
                FileWrite($File, $str)
        EndIf
        #EndRegion 处理 目录文件 开始
        Local $ts = TimerInit() ;返回一个时间戳(开始计算耗时)
        Local $File_Array = _FileSearchToArray($WorkDir, '*.htm') ;遍历搜索*.htm文件(包括子目录)到数组 $File_Array[$i]=完整路径+文件名 $i 从 1 开始循环
        If @error Then Return MsgBox(4096, '错误', '未搜索到文件 ')
        Local $FR, $thStr, $FLog, $x = 0, $ISO, $UTF
        Local $T01, $T02, $T03, $T04, $T05, $T06, $T07, $T08
        Local $T1, $T2, $T3, $T4, $T5, $T6, $T7, $T8
        For $i = 1 To $File_Array[0]
                $FR = String(FileRead($File_Array[$i]))
                $T01 = StringInStr($FR, 'Function Reference') ;<h1>Function Reference</h1> 函 数 参 考
                $T02 = StringInStr($FR, 'Parameters') ;<b>Parameters</b>        参 数
                $T03 = StringInStr($FR, 'Return Value') ;<b>Return Value</b> 返 回 值
                $T04 = StringInStr($FR, 'Remarks') ;<b>Remarks</b> 备 注
                $T05 = StringInStr($FR, 'Related') ;<b>Related</b> 相 关 函 数
                $T06 = StringInStr($FR, 'Example') ;<b>Example</b> 函 数 示 例
                $T07 = StringInStr($FR, 'Success') ;valign="top">Success:</td> 成 功
                $T08 = StringInStr($FR, 'Failure') ;valign="top">Failure:</td> 失 败
                $ISO = StringInStr($FR, 'charset=iso-8859-1"')
                $UTF = StringInStr($FR, 'charset=UTF-8"')
                If $ISO <> 0 Or $UTF <> 0 Then ;该文件含有指定字符
                        FileMove($File_Array[$i], $BakDir & StringRegExpReplace($File_Array[$i], '.+?\\html\\', ''), 9) ;备份文件及目录结构
                        If $ISO <> 0 Then
                                $string = '(?<=charset=)iso-8859-1(?=")'
                        ElseIf $UTF <> 0 Then
                                $string = '(?<=charset=)UTF-8(?=")'
                        EndIf        
                        If $T01 <> 0 Then $T1 = '(?<h1>)Function Reference(?=</h1>)';单项测试通过
                        If $T02 <> 0 Then $T2 = '(?<b>)Parameters(?=</b>)' ;单项测试通过
                        If $T03 <> 0 Then $T3 = '(?<b>)Return Value(?=</b>)' ;单项测试通过
                        If $T04 <> 0 Then $T4 = '(?<b>)Remarks(?=</b>)' ;单项测试通过
                        If $T05 <> 0 Then $T5 = '(?<b>)Related(?=</b>)';单项测试通过
                        If $T06 <> 0 Then $T6 = '(?<b>)Example(?=</b>)';单项测试通过
                        If $T07 <> 0 Then $T7 = '(?<=valign="top">)Success(?=:</td>)';单项测试通过
                        If $T08 <> 0 Then $T8 = '(?<=valign="top">)Failure(?=:</td>)' ;单项测试通过
                        
                        $thStr = StringRegExpReplace($FR, $string, 'GB2312')
                        FileWrite($File_Array[$i], $thStr) ;创建ANSI格式文件
                        $FLog &= $File_Array[$i] & @CRLF ;做输出记录
                        $x += 1
                        GUICtrlSetData($Input4, $x);实时显示修改数
                        StringRegExpReplace($FR, $T1, '函 数 参 考')
                        StringRegExpReplace($FR, $T2, '参 数')
                        StringRegExpReplace($FR, $T3, '返 回 值')
                        StringRegExpReplace($FR, $T4, '备 注')
                        StringRegExpReplace($FR, $T5, '相 关 函 数')
                        StringRegExpReplace($FR, $T6, '函 数 示 例')
                        StringRegExpReplace($FR, $T7, '成 功')
                        StringRegExpReplace($FR, $T8, '失 败')
                EndIf
        Next
        Local $te = Round(TimerDiff($ts))
        FileDelete($LogFile)
        FileWrite($LogFile, '共修改 ' & $x & ' 个文件,耗时 ' & $te & ' 毫秒。以下为已替换并改为ANSI格式的文件:' & @CRLF & $FLog)
        ShellExecute($LogFile)
        GUICtrlSetState($Button2, $GUI_DISABLE);禁用 编码转换 按钮
EndFunc   ;==>_format

Func _Replacement($WorkDir) ;文本替换
        If $WorkDir = "" Or $WorkDir = "输入文件路径,或直接拖入该文件至此" Then Return MsgBox(0, 0, "无路径!", 1)
        GUICtrlSetData($Input4, "");清空修改数
        Local $Count = 0
        Local $Original = GUICtrlRead($Input1)
        Local $replace = GUICtrlRead($Input2)
        ;遍历搜索*.htm文件(包括子目录)到数组 $File_Array[$i]=完整路径+文件名 $i 从 1 开始循环:
        Local $File_Array = _FileSearchToArray($WorkDir, '*.htm')
        For $i = 1 To $File_Array[0]
                $retval = _ReplaceStringInFile($File_Array[$i], $Original, $replace, 0, 1)
                If Not @error Then
                        $Count += $retval
                        GUICtrlSetData($Input4, $Count);实时显示修改数
                EndIf
        Next
        MsgBox(0, 0, "完成。已替换 " & $Count & " 处。")
        GUICtrlSetData($Input1, "")
        GUICtrlSetData($Input2, "")
EndFunc   ;==>_Replacement

Func _FileSearchToArray($sPath, $sFilter = '*.*') ;遍历搜索*.htm文件(包括子目录)到数组
        If StringRight($sPath, 1) <> '\' Then $sPath &= '\' ;路径变量加 "" 结尾
        If Not StringInStr(FileGetAttrib($sPath), 'D') Then Return SetError(1, 0, 0) ;无此目录,则返回错误
        If StringReplace($sFilter, ' ', '') = '' Then $sFilter = '*';文件类型变量为空,则变量='*'
        Local $sOUT = @ScriptDir & '\$$$_____temp_filelist.txt'
        FileClose(FileOpen($sOUT, 2));清空记录文本
        RunWait(@ComSpec & ' /c "' & 'dir ' & $sPath & $sFilter & '" /a:-d /b /s > ' & $sOUT, '', 0);写记录文件
        Local $FR = FileRead($sOUT);读记录文件
        FileDelete($sOUT);删除记录文件
        Local $afilelist = StringRegExp('1' & @CRLF & $FR, '\V+', 3);返回全局匹配的数组
        If @error Or UBound($afilelist) = 1 Then Return SetError(2, 0, 0) ;该目录无文件
        $afilelist[0] = UBound($afilelist) - 1
        Return $afilelist
EndFunc   ;==>_FileSearchToArray
 楼主| 发表于 2010-12-7 19:57:35 | 显示全部楼层
不支持中文搜索啊?那弄个支持才行啊
mo_shaojie 发表于 2010-12-7 17:24


什么意义,看不懂国文?还是。。。
发表于 2010-12-7 17:24:19 | 显示全部楼层
不支持中文搜索啊?那弄个支持才行啊
发表于 2010-12-7 17:22:43 | 显示全部楼层
回复下载,顶.不收费就好.
发表于 2010-12-7 16:59:40 | 显示全部楼层
积极回复,收藏备用。
发表于 2010-12-7 16:55:49 | 显示全部楼层
看下 好久没来了
发表于 2010-12-7 16:28:01 | 显示全部楼层
我要,收藏备用
您需要登录后才可以回帖 登录 | 加入

本版积分规则

QQ|手机版|小黑屋|AUTOIT CN ( 鲁ICP备19019924号-1 )谷歌 百度

GMT+8, 2024-4-20 16:17 , Processed in 0.078429 second(s), 16 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表