用批处理(vbs也行)控制winrar,将拖到批处理文件上的压缩包,进行修改,把压缩包里ABC文件夹中的文件修
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了用批处理(vbs也行)控制winrar,将拖到批处理文件上的压缩包,进行修改,把压缩包里ABC文件夹中的文件修相关的知识,希望对你有一定的参考价值。
用批处理(vbs也行)控制winrar,将拖到批处理文件上的jar压缩包(用vbs的话就是浏览选择的jar压缩包),进行修改,把压缩包里ABC文件夹中的txt.gio的文件用记事本另起一行增加一句英文单词“omyyyyyyyy”如何写批处理或者vbs啊都用也可以?本人刚学。。,,请不要全部解压后再压缩,这样会使jar无法在手机上使用,只解压单个文件修改后再替换原文件就可以了。
能有其他的方法么?
我下载了个 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制作自解压文件?
- 右键文件夹,选择“添加到压缩文件...”
- 在“常规”标签项的“压缩选项”中,勾选“创建自解压格式压缩文件”,此时“压缩文件名”处的文件扩展名为exe
- 如无特殊要求或配置,点击确定即可。否则,看下一步
- 切换到“高级”标签,点击“自解压文件选项...”
- “高级自解压选项”中,点“设置”标签,在“解压或运行”中输入解压完成后要运行的程序或批处理
- 其他的选项标签,暂不讨论。
下面结合制作自解压的Chrome说明。
- 确保开始保存的文件
Chrome自解压安装.bat
在D:\\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
(不影响前面批处理的结果)
参考文献
以上是关于用批处理(vbs也行)控制winrar,将拖到批处理文件上的压缩包,进行修改,把压缩包里ABC文件夹中的文件修的主要内容,如果未能解决你的问题,请参考以下文章