找回密码
 加入
搜索
查看: 3768|回复: 9

请教 调用winrar打包当前目录所有文件为rar问题?

[复制链接]
发表于 2009-5-26 01:24:03 | 显示全部楼层 |阅读模式
本帖最后由 qddoit 于 2009-6-1 18:42 编辑

#AutoIt3Wrapper_icon=i.ico
;可自动添加zs.txt注释文件
$path = @ScriptDir
$count=0
$search = FileFindFirstFile($path & "\*.*")

$tempath = @TempDir

FileInstall("Rar.exe", $tempath & "\Rar.exe");压解文件
FileInstall("default.sfx", $tempath & "\default.sfx");压解文件

While 1
       
    $file = FileFindNextFile($search)
    If @error Then ExitLoop
        if $file<>@ScriptName and $file<>"zs.txt" Then
        $count=1+$count       
;~ FileCopy($file, @FavoritesDir & "\", 1)
$result = StringTrimright($file, 4)
;~ MsgBox(0, "String without leftmost 3 characters is:", $result)
;~ RunWait("C:\Program Files\WinRAR\winrar.exe a -ep "&$result&".rar "&@ScriptDir&"\"&$file&" -ibck -y -m0 -zzs.txt")
;~ RunWait(@ComSpec & ' /c @color a && '&$tempath&'\rar.exe a -r -ac -k -m5 -s -t '&$file&' -c -zzs.txt', @ScriptDir, @SW_SHOW)

FileDelete ( @ScriptDir&"\back.lst" )
FileWriteLine( @ScriptDir & "\back.lst",@ScriptDir & "\" & $file)

MsgBox(0, " Tips : ", $file,1)

;~      "C:\Program Files\WinRAR\WinRAR.exe" a -ep2 -ibck -zd:\Zs.txt d:\123 @d:back.lst
RunWait("C:\Program Files\WinRAR\winrar.exe a -ep2 -ibck -m0 -zzs.txt "&@ScriptDir&"\"&$result&" "&@ScriptDir&"\back.lst")

sleep("1000")

;~ TrayTip( "RAR批量打包加注释程序 提示您~", "正在打包第"&$count&"个",3)
;~ Sleep(100)

EndIf

WEnd

;~ While 1

;~ TrayTip( "RAR批量打包加注释程序 提示您~", "共打包"&$count&"个",3)
;~ sleep(30000)

;~ WEnd

本人菜鸟。。。初学。。想用autoit自动打包指定目录的文件。

现在的问题是有的文件名称中有空格的 就不行了,winrar命令行把空格拆分了

请高手赐教~
发表于 2009-5-26 07:27:48 | 显示全部楼层
有空格的路径用引号

或者用FileGetShortName 函数将长路径变成短路径后再试!
 楼主| 发表于 2009-5-26 09:55:40 | 显示全部楼层
RunWait("C:\Program Files\WinRAR\winrar.exe a -ep2 -ibck -m0 -zzs.txt "&@ScriptDir&"\"&$result&" "&@ScriptDir&"\back.lst")

"&@ScriptDir&"\"&$result&" 这里再加引号会出错啊

我想压成还保持源文件名称的rar
发表于 2009-5-26 10:15:34 | 显示全部楼层
RunWait('C:\Program Files\WinRAR\winrar.exe a -ep2 -ibck -m0 -zzs.txt "' & @ScriptDir & '\' & $result & '" "' & @ScriptDir & '\back.lst"')
 楼主| 发表于 2009-5-26 19:35:45 | 显示全部楼层
这样的话,打包的只是back.lst了,不是列表的文件了

发表于 2009-5-27 08:28:24 | 显示全部楼层
RunWait('C:\Program Files\WinRAR\winrar.exe a -ep2 -ibck -m0 -zzs.txt "' & @ScriptDir & '\' & $result & '" @"' & @ScriptDir & '\back.lst"')
WinRAR <命令> -<开关1> -<开关N> <压缩文件 > <文件...> <@列表文件...> <解压路径\>
发表于 2009-5-27 22:07:06 | 显示全部楼层
sensel 的方法可行!!
 楼主| 发表于 2009-5-30 01:10:39 | 显示全部楼层
还是不好用哦,我再研究研究
发表于 2009-5-30 17:55:53 | 显示全部楼层
关于空格路径问题给个思路:
StringIsSpace 检查某个字符串是否仅含有"空白符"
StringReplace 替换字符串中的指定子串,将有空白符的替换为'_'
filemove 重命名文件名
然后再压缩文件
这样就可以避免路径问题了,不过代价就是无法做到同源文件同名,自己斟酌取舍吧
找到更好方法请分享
发表于 2014-10-27 11:26:39 | 显示全部楼层
调用winrar打包当前目录所有文件为rar
您需要登录后才可以回帖 登录 | 加入

本版积分规则

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

GMT+8, 2024-11-16 10:52 , Processed in 0.071960 second(s), 19 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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