afan 发表于 2010-10-13 14:31:18

RunWait()

pizigao 发表于 2010-10-13 15:09:03

RunWait()
afan 发表于 2010-10-13 14:31 http://www.autoitx.com/images/common/back.gif

已经用上了~谢谢老A

pizigao 发表于 2010-10-13 15:18:15

本帖最后由 pizigao 于 2010-10-13 15:23 编辑

再问一下~如何根据文件名截取部分文件名来生成目录呢?比如ABC_20101010_1.zip、ABC_20101010_2.zip,最后解压后放在以20101010命名的文件夹中如何解决?这个对于我有点难度~请帮忙

afan 发表于 2010-10-13 16:13:08

截取部分文件名看你要取什么特征了,如上的“ABC_20101010_1.zip、ABC_20101010_2.zip”要取“20101010”的话用正则 '\d+' 可以简单搞定

pizigao 发表于 2010-10-13 16:25:09

截取部分文件名看你要取什么特征了,如上的“ABC_20101010_1.zip、ABC_20101010_2.zip”要取“20101010”的 ...
afan 发表于 2010-10-13 16:13 http://www.autoitx.com/images/common/back.gif

能否举例说明呢?如果有很多这样的文件~但是中间部分不一样~是不是要设置变量的?

afan 发表于 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

pizigao 发表于 2010-10-13 16:57:55

本帖最后由 pizigao 于 2010-10-13 17:10 编辑


afan 发表于 2010-10-13 16:56 http://www.autoitx.com/images/common/back.gif

(\d{6,8})第一段是什么意思?如果中间那段不是固定的数字该如何写?

afan 发表于 2010-10-13 17:55:47

你说的中间那段以什么为界?如果是“_”是否有且仅有两个?问题描述清晰,一次解决

pizigao 发表于 2010-10-14 08:40:11

本帖最后由 pizigao 于 2010-10-14 08:43 编辑

你说的中间那段以什么为界?如果是“_”是否有且仅有两个?问题描述清晰,一次解决
afan 发表于 2010-10-13 17:55 http://www.autoitx.com/images/common/back.gif

一般的都是数字~格式很明确的,一共两个文件: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

pizigao 发表于 2010-10-14 08:43:45

麻烦A版帮我完善一下~这个识别码估计要设置变量~我不知道如何下手

afan 发表于 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

pizigao 发表于 2010-10-14 13:53:06

本帖最后由 pizigao 于 2010-10-14 14:13 编辑

谢谢A版~试试
试了之后发现文件名改成zip了~但是没解压~
我知道了~没把7Z.EXE打包进去

pizigao 发表于 2010-10-14 14:09:45

本帖最后由 pizigao 于 2010-10-14 15:06 编辑

假如有XSB_识别号_随机码==1.DAT和XSB_识别号_随机码==2.DAT两个文件~但是解压只解压一个~目录是生成了~
说明:后面的==1和==2固定的,一个识别号对应着两个文件~
能不能对两个文件单独定义?
$zipName=
$zipName1=
然后分别解压到DATA下面的识别号目录

afan 发表于 2010-10-14 16:16:07

两个文件的 $zipName 本来就不同,只修改了 dat 为 zip 。第10行取消注释看看

pizigao 发表于 2010-10-14 16:20:22

取消也是一样的~5555~成功就差一点了
页: 1 [2] 3
查看完整版本: 如何实现用RAR自动输入密码并解压?