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

[AU3基础] 如何实现用RAR自动输入密码并解压?

 火.. [复制链接]
发表于 2010-10-13 14:31:18 | 显示全部楼层
RunWait()
 楼主| 发表于 2010-10-13 15:09:03 | 显示全部楼层
RunWait()
afan 发表于 2010-10-13 14:31


已经用上了~谢谢老A
 楼主| 发表于 2010-10-13 15:18:15 | 显示全部楼层
本帖最后由 pizigao 于 2010-10-13 15:23 编辑

再问一下~如何根据文件名截取部分文件名来生成目录呢?比如ABC_20101010_1.zip、ABC_20101010_2.zip,最后解压后放在以20101010命名的文件夹中如何解决?这个对于我有点难度~请帮忙
发表于 2010-10-13 16:13:08 | 显示全部楼层
截取部分文件名看你要取什么特征了,如上的“ABC_20101010_1.zip、ABC_20101010_2.zip”要取“20101010”的话用正则 '\d+' 可以简单搞定
 楼主| 发表于 2010-10-13 16:25:09 | 显示全部楼层
截取部分文件名看你要取什么特征了,如上的“ABC_20101010_1.zip、ABC_20101010_2.zip”要取“20101010”的 ...
afan 发表于 2010-10-13 16:13


能否举例说明呢?如果有很多这样的文件~但是中间部分不一样~是不是要设置变量的?
发表于 2010-10-13 16:56:16 | 显示全部楼层
$File = 'ABC_20101010_1.zip'
Msgbox(0, $File, _FileNameSplit($file))

Func _FileNameSplit($file)
        Return StringRegExpReplace($file, '.*?(\d{6,8}).*', '$1')
Endfunc
 楼主| 发表于 2010-10-13 16:57:55 | 显示全部楼层
本帖最后由 pizigao 于 2010-10-13 17:10 编辑
afan 发表于 2010-10-13 16:56


(\d{6,8})第一段是什么意思?如果中间那段不是固定的数字该如何写?
发表于 2010-10-13 17:55:47 | 显示全部楼层
你说的中间那段以什么为界?如果是“_”是否有且仅有两个?问题描述清晰,一次解决
 楼主| 发表于 2010-10-14 08:40:11 | 显示全部楼层
本帖最后由 pizigao 于 2010-10-14 08:43 编辑
你说的中间那段以什么为界?如果是“_”是否有且仅有两个?问题描述清晰,一次解决
afan 发表于 2010-10-13 17:55


一般的都是数字~格式很明确的,一共两个文件:XSB_识别号_随机码==1.DAT和XSB_识别号_随机码==2.DAT~
我的需求是这样的:先把两个DAT文件改名成ZIP,然后输入密码解压,然后根据识别号建目录,把解压下的文件解压进去,我目前只能针对一个识别号操作,如果有多个的话就没办法了,

我目前的代码
#NoTrayIcon
$zip = @ScriptDir & "\XSB*.zip"
$dat = @ScriptDir & "\XSB*.dat"
If not FileExists($dat) then Exit (Msgbox(16,'错误','未找到DAT文件,请检查文件名和路径'))
FileInstall("7z.exe", @TempDir &"\7z.exe",1)
FileMove("*.dat","*.zip",1)
RunWait(@TempDir & "\7z.exe e -pxsbbak123 *.zip -odata","",@SW_HIDE)
If FileExists("*.zip") Then FileMove("*.zip","*.dat",1)
FileDelete(@TempDir&"\7z.exe")
MsgBox(64, "转换成功", "请查看DATA目录中的两个数据库文件")
Exit
 楼主| 发表于 2010-10-14 08:43:45 | 显示全部楼层
麻烦A版帮我完善一下~这个识别码估计要设置变量~我不知道如何下手
发表于 2010-10-14 13:10:37 | 显示全部楼层
根据需要自己改
Local $Dir = @ScriptDir & '\'
Local $search = FileFindFirstFile($Dir & '*.dat')
If $search = -1 Then Exit Msgbox(16,'错误','未找到DAT文件,请检查文件名和路径')
Local $File, $DataDir, $zipName
While 1
        $file = FileFindNextFile($search)
        If @error Then ExitLoop
        $zipName = StringRegExpReplace($file, '(?i)(.+?\.)dat$', '$1') & 'zip'
        $DataDir = $Dir & 'Data\' & StringRegExpReplace($file, '.*_(\d+).*', '$1')
        ;Msgbox(0, $zipName, $DataDir)
        FileMove($file, $zipName, 1)
        RunWait(@TempDir & '\7z.exe e -pxsbbak123 ' & $zipName & ' -o' & $DataDir, '', 0)
WEnd
 楼主| 发表于 2010-10-14 13:53:06 | 显示全部楼层
本帖最后由 pizigao 于 2010-10-14 14:13 编辑

谢谢A版~试试
试了之后发现文件名改成zip了~但是没解压~
我知道了~没把7Z.EXE打包进去
 楼主| 发表于 2010-10-14 14:09:45 | 显示全部楼层
本帖最后由 pizigao 于 2010-10-14 15:06 编辑

假如有XSB_识别号_随机码==1.DAT和XSB_识别号_随机码==2.DAT两个文件~但是解压只解压一个~目录是生成了~
说明:后面的==1和==2固定的,一个识别号对应着两个文件~
能不能对两个文件单独定义?
$zipName=
$zipName1=
然后分别解压到DATA下面的识别号目录
发表于 2010-10-14 16:16:07 | 显示全部楼层
两个文件的 $zipName 本来就不同,只修改了 dat 为 zip 。第10行取消注释看看
 楼主| 发表于 2010-10-14 16:20:22 | 显示全部楼层
取消也是一样的~5555~成功就差一点了
您需要登录后才可以回帖 登录 | 加入

本版积分规则

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

GMT+8, 2024-5-20 06:53 , Processed in 0.081054 second(s), 14 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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