用批处理(vbs也行)控制winrar,将拖到批处理文件上的压缩包,进行修改,把压缩包里ABC文件夹中的文件修

2024-11-27 19:34:03
推荐回答(3个)
回答(1):

WinRAR 安装目录下自带的中文帮助手册 WinRAR.chm 里有关于命令行模式的说明。
我下载了个 jar 压缩包简单试验了一下,测试通过。修改其中的jar压缩包名称即可。

'═════代═══码═══开═══始═════
jarpack = "37688.jar" 'jar压缩包名称
folder = "ABC" '文件夹名称
filespec = "txt.gio" '文件名称
mytext = "omyyyyyyyy" '要在文件中增加的一行内容

Const ForAppending = 8
Set fso = CreateObject("Scripting.FileSystemObject")
If fso.FileExists(filespec) Then
fso.DeleteFile(filespec) ’首先确保当前文件夹下不存在同名文件,防止解压出错
End If

Dim oShell
Set oShell = WScript.CreateObject ("WSCript.shell")
oShell.run "WinRAR e -ap" & folder & " " & jarpack & " *.gio"
WScript.Sleep 2000
oShell.run "WinRAR d -ap" & folder & " " & jarpack & " *.gio"
WScript.Sleep 500

If Not fso.FileExists(filespec) Then
wscript.quit
End If
Set oFile = fSO.OpenTextFile(filespec, ForAppending)
oFile.WriteLine vbCRLF & mytext
oFile.Close

WScript.Sleep 2000
oShell.run "WinRAR m -ap" & folder & " " & jarpack & " " & filespec
Set oShell = Nothing
'═════代═══码═══结═══束═════

相关WinRAR命令及开关:
命令 E - 从压缩文件解压压缩,忽略路径。
命令 X - 以完整路径解压文件和文件夹。保存在压缩文件中的文件夹架构,将会完整的还原恢复。
命令 D - 从压缩文件中删除文件。
命令 M - 移动文件和文件夹到压缩文件。
命令 U - 更新压缩文件内文件。

开关 -R - 连同子文件夹。如果是用命令X解压的(连文件夹解压),在重新将整个文件夹放回压缩包去的时候,建议要加上这个开关。
开关 -ap<路径> - 设置压缩文件内的路径。

更多内容,敬请参考帮助 —— WinRAR.chm。
上述代码按照你的要求只解压文件,因此命令X与开关-R没有用到。
还有一种实现方式:解压后不删除jar压缩包中的txt.gio,而是使用命令U直接更新该文件,之后再用DeleteFile方法删除解压并修改后的txt.gio(与jar压缩包同级目录)。

最后提醒一下,使用脚本前请先慎重备份好你的jar压缩包以防格式损坏。
当然,如果不小心损坏了,还可以用WinRAR的命令R来尝试修复。

回答(2):

批处理或vbs命令不能控制jar格式的压缩文件,虽然可以用winrar可以解压jar文件包但是不能用命令处理。

回答(3):

看来这个得二进制操作才能实现。