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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了用批处理(vbs也行)控制winrar,将拖到批处理文件上的压缩包,进行修改,把压缩包里ABC文件夹中的文件修相关的知识,希望对你有一定的参考价值。

用批处理(vbs也行)控制winrar,将拖到批处理文件上的jar压缩包(用vbs的话就是浏览选择的jar压缩包),进行修改,把压缩包里ABC文件夹中的txt.gio的文件用记事本另起一行增加一句英文单词“omyyyyyyyy”如何写批处理或者vbs啊都用也可以?本人刚学。。,,请不要全部解压后再压缩,这样会使jar无法在手机上使用,只解压单个文件修改后再替换原文件就可以了。
能有其他的方法么?

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来尝试修复。
参考技术A 批处理或vbs命令不能控制jar格式的压缩文件,虽然可以用winrar可以解压jar文件包但是不能用命令处理。 参考技术B 看来这个得二进制操作才能实现。

批处理创建快捷方式

批处理中,创建文件的快捷方式,比较方便的是调用vbs脚本。结合 for 命令,可以批量创建多个文件的快捷方式。利用Winrar软件的功能,能比较方便的制作自解压安装软件。

批处理文件的文件编码为ANSI,或GB2312。否则中文会乱码。

单个文件创建快捷方式

假如用MyChrome将Chrome 75绿色便携化到D:\\programfiles\\Chrome75文件夹,可执行的文件是MyChrome.exe。下面创建MyChrome.exe的快捷方式,并将其发送到桌面,同时在程序组中创建“谷歌浏览器”,其中包括MyChrome.exe快捷方式。

@echo off

::如无:快捷文件以.lnk或.url结尾
setlocal EnableDelayedExpansion

cd Chrome75
set WrkDir=%~dp0

set "LinkName=谷歌浏览器.lnk"
set filname=mychrome.exe
set ThePath=%~dp0%mychrome.exe
mshta VBScript:Execute("Set Shell=CreateObject(""WScript.Shell""):Set Link=Shell.CreateShortcut(""!LinkName!""):Link.TargetPath=""!ThePath!"":Link.WorkingDirectory=""!WrkDir!"":Link.Save:close"^)

if exist "C:\\ProgramData\\Microsoft\\Windows\\Start Menu\\Programs\\谷歌浏览器" (
  del /Q "C:\\ProgramData\\Microsoft\\Windows\\Start Menu\\Programs\\谷歌浏览器"
) else (
  mkdir "C:\\ProgramData\\Microsoft\\Windows\\Start Menu\\Programs\\谷歌浏览器"
)

copy /y 谷歌浏览器.lnk "%USERPROFILE%\\Desktop\\" >nul 2>nul
move /y *.lnk "C:\\ProgramData\\Microsoft\\Windows\\Start Menu\\Programs\\谷歌浏览器\\" >nul 2>nul

因为要在后面的自解压文件用,将该批处理命名保存为“Chrome自解压安装.bat”,放置于MyChome.exe所在的目录。点击运行就能达到设计的要求。

批处理中,直接在当前目录创建MyChrome.exe的快捷方式“谷歌浏览器.lnk”。接下来创建开始菜单的程序组。将快捷方式复制到桌面,再将快捷方式移动到程序组的文件夹中。

也可以直接在桌面创建快捷方式,然后复制快捷方式到程序组的文件中。

setlocal EnableDelayedExpansion必须有,否则会提示“快捷方式文件以.lnk或.url结尾”的错误提示。

简单的方式

如果只是要桌面创建MyChrome.exe的快捷方式,最简单方式如下(注意不需要setlocal EnableDelayedExpansion):

@echo off

mshta VBScript:Execute("Set a=CreateObject(""WScript.Shell""):Set b=a.CreateShortcut(a.SpecialFolders(""Desktop"") & ""\\谷歌浏览器.lnk""):b.TargetPath=""%~dp0MyChrome.exe"":b.WorkingDirectory=""%~dp0"":b.Save:close")

多个文件批量创建快捷方式

假设,要创建"英雄无敌魔力觉醒"中的部分文件的快捷方式。要求:

  • 桌面是主程序h3era HD.exe的快捷方式
  • 程序组"魔力觉醒"中包含如下文件的快捷方式:
    • h3era HD.exe
    • h3era_34M HD.exe
    • h3era_43M HD.exe
    • Tools\\Mod Manager\\mmanager.exe
    • Tools\\ERM&ERA帮助宝典v2.0 (测试).chm
    • HD3_Launcher.exe

魔力觉醒的文件夹为D:\\ProgramFiles\\gs\\Hero3_The_Magic_Awakens\\,也就是h3era HD.exe(或h3era.exe/Heroes3.exe)所在的文件夹。

下面的批处理或txt文件都保存在魔力觉醒文件夹中。

MagAwaken.txt

先建立一个txt文件"MagAwaken.txt",内容如下:

魔力觉醒:h3era HD.exe
魔力觉醒34M:h3era_34M HD.exe
魔力觉醒43M:h3era_43M HD.exe
MOD管理器:Tools\\Mod Manager\\mmanager.exe
ERM&ERA帮助宝典v2:Tools\\ERM&ERA帮助宝典v2.0 (测试).chm
高清补丁:HD3_Launcher.exe

批处理MagAwaken.bat

批处理文件MagAwaken.bat,内容如下:

@echo off
rem 快捷方式 by Castle@wakeofgods.com(开心鲨鱼@qq)

color 0a
title “英雄无敌WOG之魔力觉醒” 快捷方式 by Castle@wakeofgods.com(开心鲨鱼@qq)

cd Hero3_The_Magic_Awakens
set WrkDir=%~dp0

setlocal EnableDelayedExpansion

for /f "delims=: tokens=1,*" %%a in (MagAwaken.txt) do (
  set LinkName=%%a.lnk
  set filname=%%b
  set ThePath=%~dp0%%b
  mshta VBScript:Execute("Set Shell=CreateObject(""WScript.Shell""):Set Link=Shell.CreateShortcut(""!LinkName!""):Link.TargetPath=""!ThePath!"":Link.WorkingDirectory=""!WrkDir!"":Link.Save:close"^)
)

if exist "C:\\ProgramData\\Microsoft\\Windows\\Start Menu\\Programs\\英雄无敌WOG之魔力觉醒" (
  del /Q "C:\\ProgramData\\Microsoft\\Windows\\Start Menu\\Programs\\英雄无敌WOG之魔力觉醒"
) else (
  mkdir "C:\\ProgramData\\Microsoft\\Windows\\Start Menu\\Programs\\英雄无敌WOG之魔力觉醒"
)

copy /y 魔力觉醒.lnk "%USERPROFILE%\\Desktop\\" >nul 2>nul
move /y *.lnk "C:\\ProgramData\\Microsoft\\Windows\\Start Menu\\Programs\\英雄无敌WOG之魔力觉醒\\" >nul 2>nul

在Winrar自解压文件中的应用

如何用Winrar制作自解压文件?

  1. 右键文件夹,选择“添加到压缩文件...”
  2. 在“常规”标签项的“压缩选项”中,勾选“创建自解压格式压缩文件”,此时“压缩文件名”处的文件扩展名为exe
  3. 如无特殊要求或配置,点击确定即可。否则,看下一步
  4. 切换到“高级”标签,点击“自解压文件选项...”
  5. “高级自解压选项”中,点“设置”标签,在“解压或运行”中输入解压完成后要运行的程序或批处理
  6. 其他的选项标签,暂不讨论。

下面结合制作自解压的Chrome说明。

  • 确保开始保存的文件Chrome自解压安装.batD:\\programfiles\\Chrome75文件夹。
  • 进入D:\\programfiles\\文件夹,右键其中的Chrome75文件夹,如上面步骤所示。
  • 在上面的第5个步骤中,设置中输入Chrome75\\Chrome自解压安装.bat即可。
  • 得到自解压文件D:\\programfiles\\Chrome75.exe
  • 测试:双击Chrome75.exe,点“解压”(默认的“目标文件夹”是D:\\),将解压文件并得到D:\\Chrome75,且生成了快捷方式和程序组。

上面的补充说明:

  • 解压时,Winrar会进入指定的“目标文件夹”,此处默认的“目标文件夹”是D:\\
  • 根据压缩时的设置,运行指定的文件。此处是运行Chrome75\\Chrome自解压安装.bat。注意,位置仍然在D:\\,没有进入D:\\Chrome75文件夹。所以批处理中,并没有注释掉cd Chrome75(不影响前面批处理的结果)

参考文献

  1. 批处理创建文件桌面快捷方式
  2. 批处理实现批量创建快捷方式

以上是关于用批处理(vbs也行)控制winrar,将拖到批处理文件上的压缩包,进行修改,把压缩包里ABC文件夹中的文件修的主要内容,如果未能解决你的问题,请参考以下文章

批处理创建快捷方式

批处理 winrar 自解压 运行

如何用批处理静默卸载winRAR

vbs能做啥呢,与bat相比的优缺点?

批处理 命令获取主板序列号 硬盘序列号 CPU ID?

如何在vbs中执行批处理命令