【问题标题】:7zip SFX Batch For SendTo FolderSendTo 文件夹的 7zip SFX 批处理
【发布时间】:2013-05-28 15:15:50
【问题描述】:
7z a -mx9 -sfx %1.exe %1

这是我目前所拥有的批处理文件,如果我将文件或文件夹拖放到批处理文件上,我会在 Ultra Compression 上获得与原始文件同名的 7zip SFX。但这仅适用于文件与批处理文件位于同一文件夹中的情况。

我想要实现的是,将此批处理文件放入 sendto 文件夹,这样我就可以将任何地方的任何文件转换为高度压缩的 exe,该 exe 出现在原始目录的文件夹中。

任何帮助将不胜感激,我确定它很简单,但我不知道。

编辑 5 月 29 日 @ 16:50

[HKEY_CLASSES_ROOT*\shell\压缩为 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 的父级。

【问题讨论】:

    标签: batch-file 7zip sendto


    【解决方案1】:

    我使用以下批处理文件将文件或文件夹发送到 Send-To 快捷方式,这会在与原始文件/文件夹相同的位置创建一个自解压 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 exist 代码,这样如果您将.exe 发送到批处理文件,它仍会创建一个自解压.exe,但文件名中包含_zipped

    【讨论】:

    • 谢谢你的作品很好,仍然试图弄清楚它在做什么,哈哈
    • 我能找到的唯一问题是它不适用于 exe 文件是否有任何改变。
    • 他们压缩 EXE 的唯一方法是更改​​文件名。我将发布对代码的编辑。
    • 爱它谢谢。还创建了一个上下文菜单项只是为了好玩。将其添加到我的帖子中
    • 建议在检查目录(第 2 行)时将 stderr 重定向到 nul,以避免显示错误。 cd /d %1 2> nul
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-10-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-20
    • 1970-01-01
    相关资源
    最近更新 更多