7z a -mx9 -sfx %1.exe %1
这就是我所拥有的批处理文件,如果我将文件或文件夹拖放到批处理文件中,我会在Ultra Compression上获得与原始文件同名的7zip SFX。但这仅在文件与批处理文件位于同一文件夹中时才有效。
我想要实现的是,将此批处理文件放入sendto文件夹,以便我可以将任何文件转换为高度压缩的exe,它出现在原始目录的文件夹中。
任何帮助将不胜感激,我确定它很简单,但我没有线索。
编辑5月29日@ 16:50
[HKEY_CLASSES_ROOT * \ shell \ Compress To Exe]
[HKEY_CLASSES_ROOT * \ shell \ Compress To Exe \ command] @ =“\”c:\ Program Files \ 7-Zip \ 7z \“u -mx9 -sfx -r -t7z \”%1.exe \“\”%1 \“”
将其添加到注册表或.reg文件以创建上下文菜单按钮,该按钮是sendto的父级。
答案 0 :(得分:2)
我使用以下批处理文件将文件或文件夹发送到“发送至”快捷方式,该快捷方式在与原始文件/文件夹相同的位置创建自解压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
我的参数与您的参数略有不同,但您可以根据需要调整它们。
添加了if exist
代码,这样如果您向批处理文件发送.exe
,它仍然会创建一个自解压.exe
,但在_zipped
中文件名。