中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --

联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum
DOS,代表着自由开放与发展,我们努力起来,学习FreeDOS和Linux的自由开放与GNU精神,共同创造和发展美好的自由与GNU GPL世界吧!

中国DOS联盟论坛
现在时间是 2026-06-29 09:18
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » [VBS]如果调用Winrar并执行压缩操作? 查看 1,327 回复 10
楼 主 [VBS]如果调用Winrar并执行压缩操作? 发表于 2007-04-05 06:30 ·  中国 安徽 马鞍山 电信
中级用户
★★
积分 397
发帖 168
注册 2006-10-08 10:07
19年会员
UID 64934
状态 离线
用的是VBS脚本,想针对某个文件夹(特定的文件夹,事先定义好了)进行压缩处理!假设这个文件夹有20个DOC文档吧!

怎么调用WinRar呢,压缩后的文件名就以该文件夹命名!
Ps:在对这个文件夹压缩的时候,有两个方式,一个是压缩里面的所有文件,不包括文件夹本身,还有个就是直接压缩文件夹本身,哪个简单,就用哪个吧!!

谢谢!!
2 发表于 2007-04-05 06:36 ·  中国 河北 保定 联通
银牌会员
★★★
积分 1,513
发帖 554
注册 2005-12-30 00:50
20年会员
UID 48180
性别 男
状态 离线
自己去查winrar的命令参数 然后用VBS中的run

[ Last edited by baomaboy on 2007-4-6 at 03:06 AM ]
3 发表于 2007-04-05 09:40 ·  中国 安徽 马鞍山 电信
中级用户
★★
积分 397
发帖 168
注册 2006-10-08 10:07
19年会员
UID 64934
状态 离线
查它就可以解决吗??查查看,谢谢
4 发表于 2007-04-06 01:37 ·  中国 安徽 马鞍山 电信
中级用户
★★
积分 397
发帖 168
注册 2006-10-08 10:07
19年会员
UID 64934
状态 离线
看不明白,能不能提示一下,比如说举个例子!!
5 发表于 2007-04-06 01:41 ·  中国 江苏 扬州 移动
初级用户
积分 90
发帖 32
注册 2007-01-14 09:19
19年会员
UID 76479
性别 男
状态 离线
RAR压缩的同步文件夹

'电脑爱好者专用版 编写:李兴旺 E-MAIL:wors_hip*163.com

MsgBox_Title_Text = "压缩的同步文件夹"
CompressionFolder = InputBox("请输入即将压缩的文件夹路径:", MsgBox_Title_Text, "C:\PHP")
If CompressionFolder = "" Then WScript.Quit

Function Interrogation(Contents)
Dim intButton
intButton = MsgBox(Contents, vbQuestion + vbYesNo, MsgBox_Title_Text )
Interrogation = intButton = vbYes
End Function

Function Compression(CompressionFolder)
FileName = "压缩的同步文件夹.vbs"
Set fso = CreateObject("Scripting.FileSystemObject")
Destination = UCase(fso.GetFile(FileName).Drive) & "\"
DIM cmd
set fso= wscript.CreateObject("wscript.shell")
cmd = "WINRAR A -IBCK -R " & Destination & "压缩的同步文件夹.RAR " & CompressionFolder
fso.run cmd
MsgBox "成功把 " & CompressionFolder & " 文件夹压缩到 " & Destination, vbInformation, MsgBox_Title_Text
End Function

If Interrogation("定时压缩文件夹,同步数据到闪盘,请点击“是”!" & vbCrLf & "马上压缩文件夹,同步数据到闪盘,请点击“否”!") Then
Savetime = InputBox("请输入24 小时格式 (hh:mm) 的时间:", MsgBox_Title_Text, "11:30")
If Savetime = "" Then WScript.Quit
MsgBox "已经运行了定时压缩文件夹,请不要重复运行!", vbExclamation, MsgBox_Title_Text
Dim Check
Check = True
Do
HHMM = FormatDateTime(Time, 4)
If HHMM = Savetime Then
Compression(CompressionFolder)
Exit Do
End If
Loop Until Check = False
Else
Compression(CompressionFolder)
End If
6 发表于 2007-04-06 03:18 ·  中国 河北 保定 联通
银牌会员
★★★
积分 1,513
发帖 554
注册 2005-12-30 00:50
20年会员
UID 48180
性别 男
状态 离线
Originally posted by mygoldnet at 2007-4-6 01:41:
RAR压缩的同步文件夹

'电脑爱好者专用版 编写:李兴旺 E-MAIL:wors_hip*163.com

MsgBox_Title_Text = "压缩的同步文件夹"
CompressionFolder = InputBox ...


代码可当参考范例。

不过眇第一眼时发现了"fso.run cmd"吃了一惊,FSO(FileSystemObject)什么时候多出个.run的方法啊,又仔细看了看
Set fso = CreateObject("Scripting.FileSystemObject")
然后
set fso= wscript.CreateObject("wscript.shell")
虽然可以但很使得代码可读性变差了(太容易产生歧意了)不如用个wshshell
7 发表于 2007-04-06 10:18 ·  中国 山东 东营 联通
新手上路
积分 7
发帖 4
注册 2007-04-06 09:15
19年会员
UID 84161
性别 男
状态 离线
初学者,学习中。。。
8 发表于 2007-04-07 05:03 ·  中国 安徽 马鞍山 电信
中级用户
★★
积分 397
发帖 168
注册 2006-10-08 10:07
19年会员
UID 64934
状态 离线
首先感谢mygoldnet提供代码,回去好好研究下!
baomaboy说的有道理,哪怕写简单点,写成 "Ws" 也OK啊
谢谢各位
9 发表于 2007-05-24 22:19 ·  中国 海南 联通
新手上路
积分 13
发帖 7
注册 2006-12-01 09:39
19年会员
UID 72265
性别 男
状态 离线
这个代码好难。。。
10 发表于 2007-05-25 12:16 ·  中国 黑龙江 牡丹江 电信
中级用户
★★
积分 216
发帖 129
注册 2007-02-14 07:26
19年会员
UID 79469
性别 男
状态 离线
我是用最笨的方法.
regedit /s D:\m\Settings.reg
"C:\Program Files\WinRAR\WinRAR.exe" "-cp新建配置 6"
regedit /s "D:\m\删除Settings.reg"
其中Settings.reg就是事先导出的WinRAR注册表文件
删除Settings.reg就是删除cp新建配置 6的注册表文件,以前写的用习惯了.
11 发表于 2007-05-25 17:17 ·  中国 新疆 乌鲁木齐 电信
高级用户
★★★
Autowalk
积分 845
发帖 375
注册 2007-03-03 01:58
19年会员
UID 80606
性别 男
状态 离线
汗 fso.run是什么?
还是在CMD里操作,还不如直接用BAT

[ Last edited by zhoushijay on 2007-5-25 at 05:21 PM ]
你好,脚本专家!
<a target=blank href=tencent://message/?uin=29654761&Site=www.111.com&Menu=yes><img border="0" SRC=http://wpa.qq.com/pa?p=1:29654761:5 alt="点击这里给我发消息"></a>
论坛跳转: