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~成功就差一点了