我用vb调用winrar出现的问题

作者&投稿:潭曼 (若有异议请与网页底部的电邮联系)
vb 调用 winrar 命令行 压缩问题~

关于bat中使用rar压缩命令 2010-08-05 19:06:01| 分类: 默认分类 |举报 |字号 订阅 数据库备份,导出的dmp 文件比较大,需要压缩,压缩后大小能变为原来十分之一左右吧。写的是批处理的语句,每天调用,自动导出dmp 文件,压缩删除原文件。首先写下路径先将压缩软件的路径写入系统的环境变量里,加入到path中。比如将“C:\Program Files\WinRAR\”加入到path中。之后批处理中写好相应的处理命令:rar a -df %filename%.rar %filename%.dmp 附: 压缩参数 用法: rar - - a 添加文件到压缩文件c 添加压缩文件注释cf 添加文件注释ch 更改压缩文件参数cw 写入压缩文件注释到文件d 删除压缩文件中的文件e 解压压缩文件到当前目录f 刷新压缩文件中的文件i[参数]= 在压缩文件中查找字符串k 锁定压缩文件l[t,b] 列出压缩文件[技术信息,简洁]m[f] 移动到压缩文件[仅对文件]p 打印文件到标准输出设备r 修复压缩文件rc 重建丢失的卷rn 重命名压缩文件rr[N] 添加数据恢复记录rv[N] 创建恢复卷s[名字|-] 转换压缩文件为自解压格式或反之t 测试压缩文件u 更新压缩文件中的文件v[t,b] 详细列出压缩文件[技术信息,简洁]x 用绝对路径解压文件- 停止扫描ac 压缩或解压后清除存档属性ad 添加压缩文件名到目标路径ag[格式] 使用当前日期生成压缩文件名ao 添加具有存档属性的文件ap 添加路径到压缩文件中as 同步压缩文件内容av 添加用户身份校验 (仅注册版)av- 禁用用户身份校验c- 禁用注释显示cfg- 禁用读取配置cl 名称转换为小写cu 名称转换为大写df 压缩后删除文件dh 打开共享文件ds 对固实压缩文件禁用名称排序e[+] 设置文件排除和包括属性ed 不添加空目录en 不添加"压缩文件结束"标志ep 从名称中排除路径ep1 从名称中排除基本目录ep2 展开为完整路径ep3 扩展路径为包含盘符的完全路径f 刷新文件hp[密码] 同时加密文件数据和文件头id[c,d,p,q] 禁用信息显示ieml[地址] 邮寄压缩文件ierr 发送所有消息到标准错误设备ilog[名称] 把错误写到日志文件 (仅注册版)inul 禁用所有消息ioff 完成一个操作后关闭 PC 电源isnd 启用声音k 锁定压缩文件kb 保留损坏的已解压文件m 设置压缩级别(0-存储...3-默认...5-最大)mc 设置高级压缩参数md 以KB为单位的字典大小(64,128,256,512,1024,2048,4096 or A-G)ms[ext;ext] 指定存储的文件类型mt 设置线程数n 仅包括指定文件n@ 从标准输入设备读取要包括的文件名称n@ 在指定列表文件包括文件o+ 覆盖已存在文件o- 不覆盖已存在文件oc 设置 NTFS 压缩属性or 自动重命名文件os 保存 NTFS 流ow 保存或恢复文件所有权和组[密码] 设置密码p- 不询问密码r 包含子目录r0 仅包含通配符名称的子目录ri[:] 设置优先级 (0-默认,1-最小..15-最大) 和休眠时间(毫秒)rr[N] 添加数据恢复记录rv[N] 创建恢复卷s[,v[-],e] 创建固实压缩文件s- 禁用固实压缩文件sc[obj] 指定字符集sfx[名称] 创建自解压文件si[名称] 从标准输入设备读取数据sl 处理小于指定大小的文件sm 处理大于指定大小的文件t 压缩后测试文件ta 添加日期 后修改的文件,日期格式 YYYYMMDDHHMMSStb 添加日期 前修改的文件,日期格式 YYYYMMDDHHMMSStk 保留原始压缩文件时间tl 设置压缩文件时间为最新时间tn 添加 以后的文件to 添加 以前的文件ts[N] 保存或恢复文件时间(修改,创建,访问)u 更新文件v 自动检测创建卷的大小或者列出所有的卷v[k,b] 创建卷大小=*1000 [*1024, *1]vd 创建卷前清除磁盘内容ver[n] 文件版本控制vn 使用旧样式卷命名方案vp 每卷之前暂停w 指定工作目录x 排除指定的文件x@ 从标准输入设备读取要排除的文件名x@ 排除指定列表文件中的文件y 假设对全部询问都回答是z[文件] 从文件读取压缩文件注释举个例子: 建立一个批处理BackFav.bat(名字可以随便起)文件内容:REM 这个批处理文件是用来自动备份我的收藏夹REM WinRAR - - "D:\Program Files\WinRAR\WinRAR.exe" a -as -r -sfx -zsfxpara.txt -EP1 "d:\my documents\Favorites.exe" "%USERPROFILE%\Favorites"===================================================参数说明:a: 添加指定的文件(源目录,这里是"%USERPROFILE%\Favorites")和文件夹到压缩文件(目标文件,这里是"d:\my documents\Favorites.exe")中。-as: 这是一个开关,指添加方式是“同步压缩文件内容”-r: 表示“包含子文件夹”-sfx: 表示建立的是一个自解压文件-zsfxpara.txt: 从文件sfxpara.txt读取压缩文件注释,这注释有什么用后面解释-ep1: 表示不把路径%USERPROFILE%保存在压缩文件中2. 注释文件的作用建立压缩文件的时候不光要考虑压缩那些文件,还要考虑怎么解压缩。通过注释文件可以向压缩包传递许多有用的信息。sfxpara.txt内容:PATH=%USERPROFILE%\Silent=1例:"C:\Program Files\WinRAR\Rar.exe" a "g:\aa.rar" "f:\11.txt" 压缩"f:\11.txt"到G盘,命名为“aa”"C:\Program Files\WinRAR\Rar.exe" d "g:\aa.rar" "22.bat" 删除压缩包"g:\aa.rar"中的"22.bat" 文件"C:\Program Files\WinRAR\Rar.exe" d "g:\aa.rar" "ABC" 删除压缩包"g:\aa.rar"中的"ABC" 文件夹

Rarexe = App.Path & "\winrar\winrar.exe" WinRAR 程序是不可能在你当前目录下的。

传递命令时只需把 数据 这个文件夹的路径值传递就行了。

把压缩命令写成BAT文件后调用:使用SHELL命令
文件与文件夹在压缩前加入一个判断命令。
解压缩命令 是调用 WINRAR 参数中的 e 命令就行了。路径长短不须你操心
如果实在是不明白就把。WinRAR 中文帮助文档翻看个二三次就懂了。

'生成压缩命令行
'参数注解;
a 命令开关,
-df 压缩后删除原文件,
-ep1 从名称排除基准文件夹,
-ibck后台运行压缩程序。
以上四个参数为winrar 命令行参数。后三个为可选参数,第一个 a 为必须的。

WinRARExEPath 是 WinRAR 程序绝对路径值,从注册表中获取的
ON_NAME & ".rar" 是目标文件文件名称包含驱动器名。称扩展名为 .rar
FilePath 是原文件或文件夹名称包含驱动器名。

BatchStr = """" & WinRARExEPath & """ a -ep1 -o+ -ibck """ & ON_NAME & ".rar" & """ """ & FilePath & """"
Call logFile(App.Path & "\WinRaR.bat", BatchStr) '写入批处理语句
Shell App.Path & "\WinRaR.bat" '调用批处理文件

以上问题你需要解决:
1:如可何操作注册表
2:文件与文件夹的操作
3:命令行中的双引号与单引号的输入
QQ:281972862

原因是VB的shell调用不是阻塞型调用,也就是,在执行第一句的shell后,VB会马上执行下面的删除,当时上面可能还没压缩完,文件占用中,当然删不掉了。
最简单的解决办法是调用批处理解决。

给后来者一个参考解决方法,使用延时
dim savetime as single
savetime = Timer
While Timer < savetime + 1 '此处意思为延时1秒
DoEvents
Wend
把这一段插在 call shell 之后,大概就可以解决了

shell命令问题,关键是在打开QQ的情况下,由于某些文件被QQ占用,所以无法正确解压


在Vbscript脚本里怎么模拟出“Win+R”的组合键
Set oWsh = CreateObject("Wscript.Shell")oWsh.SendKeys "^{Esc}{r 15}{~ 2}"建议用VB调用API函数,VBS无法解释API函数。

vb如何调用Windows自带的压缩工具给zip文件加密
你把简单的问题弄复杂了,去随便找个zip组件吧,就算是winrar自带的rar.exe都支持密码操作的。如果一定要通过系统自带的那个功能来实现的话,可以考虑模拟按键操作,也就是用findwindow之类找到打开的那个窗口,然后对那个窗口发送按键信息来添加密码。系统自带那个zipfldr.dll没有公开接口,用命令行运行rundll...

如何用VB代码制作Word文档的字体设置框
1 打开word 双击桌面word图标打开word窗口,也可同时按下“win+r"键,在运行对话框中输入:winword,回车亦可快速打开word窗口。2 制作样表 在打开的word文档中,插入一个样表,用于后期操作。把光标定位到表格中,这时工具栏会出“设计”选框卡,点击切换到该页面上。开始录制宏 1.此时,在word应用...

用VB代码打开带密码的压缩包
在窗体拉出一个command按钮,然后输入 Private Sub Command1_Click()Dim s As String s = "C:\\Program Files\\WinRAR\\WinRAR.exe x c:\\我的压缩包.rar c:\\"Shell "cmd \/c " & s, 0 End Sub 意思是把c盘下"我的压缩包.rar"文件解压到c盘下。

vb怎么调用rar解压文件名带空格的文件
Shell """C:\\Program Files\\WinRAR\\Rar.exe"" x ""D:\\My Documents\\xx.rar"" *.* ""D:\\My Documents\\a""", vbHide 以上代码是把 "D:\\My Documents\\xx.rar" 这个压缩文件中的所有文件(含路径)全部解压缩到 "D:\\My Documents\\a" 这个文件夹中。注意,在字符串中要用两个双引号""...

VB 使用ShellExecute 调用RAR进行解压
Shell "C:\\Program Files\\WinRAR\\Rar e C:\\1.rar"下面是rar控制台使用的所有命令 :用法: rar <命令> -<开关 1> -<开关 N> <压缩文件> <文件...> <@列表文件...> <解压路径\\> <命令> a 添加文件到压缩文件 c 添加压缩文件注释 cf 添加文件注释 ch 改变压缩文件参数 cw 写入压缩...

vb怎么压缩\/解压数据?
winrar有预定义的指令的,比如下面的vb代码把文件压缩: mystr = "C:\\Program Files\\WinRAR\\WinRAR.exe"Source = "d:\\1.txt" '源文件的位置 Target = "d:\\" '存放压缩文件的位置 mystr = mystr & " a " & Target & " " & Source '调用RAR文件压缩 retval = Shell(mystr, vbHide)...

vb 调用 cmd 这句子那里错了? Shell "cmd.exe \/c, copy \/y C:\\Prog...
具体的vb语句:Shell "cmd \/c copy \/y ""C:\\Program Files\\WinRAR\\rar.exe"" d:\\"建议加上隐藏窗口的参数:Shell "cmd \/c copy \/y ""C:\\Program Files\\WinRAR\\rar.exe"" d:\\", vbHide 另外,vb复制文件的命令本身就有,不必调用cmd。语句:FileCopy "C:\\Program Files\\WinRAR\\rar.exe...

VB.NET中如何得到计算机硬件信息
使用Win32_Processor列出处理器的信息Imports System.ManagementPublic Class Form1Inherits System.Windows.Forms.Form#Region " Windows 窗体设计器生成的代码 "Public Sub New()MyBase.New()'该调用是 Windows 窗体设计器所必需的。InitializeComponent()'在 InitializeComponent() 调用之后添加任何初始化End Sub'窗体...

vb6.0中怎么使用MSCOMM
MSComm控件在串口编程时非常方便,程序员不必花时间去了解较为复杂的API函数,而且在VB中容易使用。2 用visual basic 6.0进行串行通信程序设计的方法 (1) 用visual basic 6.0进行串行通信程序的设计有两种方式,一是直接调用Windows API,另一种方式是使用通信组件,但后一种方式实际上是通过通信组件...

新兴区13390607178: vb 调用 winrar 命令行 压缩问题 -
叶别灰黄: 1

新兴区13390607178: VB调用外部程序的问题 -
叶别灰黄: 双击批处理文件时,当前文件夹是批处理文件所在的文件夹,用VB调用批处理文件时,当前文件夹是VB的当前文件夹,即VB的 App.Path ,所以两个操作是在不同的文件夹查找 WinRARV380CN.exe ,WinRARV380CN.exe 不在VB的 App.Path 中,所以找不到.解决办法:在批处理文件中 start /wait WinRARV380CN.exe /s 的前面加一句 cd /d %~dp0

新兴区13390607178: vb压缩文件的小问题?
叶别灰黄: 官方提供了好几个语言的调用方法,你到官网下载下来看看就知道了 不过官网发的代码是调用的一个dll不是winrar主程序

新兴区13390607178: 关于vb 解压文件的几个问题 -
叶别灰黄: Private Sub Command1_Click()Dim Prar As String 'winrar程序路径Dim Pfile As String '压缩文件地址Dim Pdir As String '解压路径Dim PSW As String '解压密码Prar = "C:\program files\winrar\winrar.exe"Pfile = "G:\下载\1"Pdir = "...

新兴区13390607178: 使用winrar 解压文件出现错误,文件被损坏怎么办? -
叶别灰黄: 1、用WinRAR打开这个遇到错误的压缩包文件,点击菜单中的'工具-修复压缩文件',打开压缩文件修复面板. 2、在压缩文件类型,原文件是什么格式,就选什么格式.指定存放路径,然后点击确定开始修复.3、WinRAR在修复过程中找到了'恢复记录'的存在,就会使用恢复记录来修复这个RAR文件,修复后的文件会以“fixed”开头,解压这个fixed开头的压缩包就可以解决文件破损的问题了.

新兴区13390607178: vb调用winrar创建压缩文件 -
叶别灰黄: dim WinRAR = "C:\Program Files\Winrar\" 'winrar安装路径 dim Path1 = "c:\1.xml" '要压缩的文件,路径带空格的话字符串最外面要加两对双引号 dim Path2 = "c:\2.xml" '要压缩的文件,路径带空格的话字符串最外面要加两对双引号 dim RarPath = "D:\2.rar" '生成的压缩文件,路径带空格的话字符串最外面要加两对双引号 Private Sub Command1_Click() Shell WinRAR & "rar.exe a " & RarPath & " " & Path1 & " " & Path2 End Sub

新兴区13390607178: vb调用WINRAR -
叶别灰黄: Private Sub Command1_Click() Shell ("C:\Program Files\WinRAR\winrar.exe a -hpfGzq5yKw c:\secret.rar c:\1.txt") End Sub 将添加文件 1.txt 到加密的压缩文件secret.rar中,使用密码'fGzq5yKw'-hp是密码开关 a是压缩参数 像你那个,要加text1...

新兴区13390607178: vb用unrar.exe怎么不行 -
叶别灰黄: mystr = "C:\Program Files\WinRAR\RAR.exe" '注意这里哦 Source = "D:\aa\123.rar" Target = "E:\aa\" 'E:\aa\ 最后有斜杠哦 mystr = mystr & " X -y " & Source & " -ad- " & Target 'X的前后都要加一个空格 注意我添加的参数-Y表示不提示 ...

新兴区13390607178: VB调用WinRAR.exe 为压缩文件添加注释 -
叶别灰黄: 倒是有办法从文件加载注释到rar 直接加文本试过好像成功不了 你可以先中转进个txt文件 然后再写进注释命令如下:WinRAR c -zinfo.txt my.rar 其中c -z都是命令符 info.txt是注释 文件 my.rar是你需要添加注释的rar文件 OK 可以搞定了

新兴区13390607178: vb如何调用winrar静默压缩文件
叶别灰黄: '自己修改一下 Private Sub Command1_Click() With CreateObject("Wscript.Shell") Shell .RegRead("HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\App Paths\winrar.EXE\Path") & "\WinRAR.exe a -r d:\d.rar d:\ddd\*.doc", vbHide End With End Sub

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网