7z a -mx9 -sfx %1.exe %1
这就是我到目前为止所拥有的批处理文件,如果我将文件或文件夹拖放到批处理文件上,我会在超压缩上获得与原始文件同名的 7zip SFX。但这仅当文件与批处理文件位于同一文件夹中时才有效。
我想要实现的是,将此批处理文件放入 sendto 文件夹中,以便我可以将任何位置的任何文件转换为高度压缩的 exe,该文件出现在原始目录的文件夹中。
任何帮助将不胜感激,我确信它很简单,但我不知道。
编辑 5 月 29 日 @ 16:50
[HKEY_CLASSES_ROOT*\shell\压缩为 Exe]
[HKEY_CLASSES_ROOT*\shell\压缩到 Exe\命令] @="\"c:\Program Files\7-Zip\7z\"u -mx9 -sfx -r -t7z\"%1.exe\"\"%1\""
将其添加到注册表或 .reg 文件以创建上下文菜单按钮,该按钮是 sendto 的父级。
最佳答案
我使用以下批处理文件将文件或文件夹发送到“发送到”快捷方式,这会在与原始文件/文件夹相同的位置创建一个自解压 7z 文件:
@echo off
cd /d %1
if %errorlevel%==1 (goto file) else (goto dir)
:dir
cd..
"c:\Program Files\7-Zip\7z" u -mx9 -sfx -r -t7z "%~n1.exe" "%~f1"
goto :EOF
:file
cd /d "%~dp1"
if exist "%~n1.exe" (
"c:\Program Files\7-Zip\7z" u -mx9 -sfx -t7z "%~n1_zipped.exe" "%~f1"
) else (
"c:\Program Files\7-Zip\7z" u -mx9 -sfx -t7z "%~n1.exe" "%~f1"
)
goto :EOF
我的参数与你的略有不同,但你可以根据需要调整它们。
5 月 29 日 - 编辑
添加了 if exit
代码,以便如果您将 .exe
发送到批处理文件,它仍然会创建自解压 .exe
,但文件名中包含 _zipped
。
关于batch-file - SendTo 文件夹的 7zip SFX 批处理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16795607/