本帖最后由 androllen 于 2026-2-24 23:52 编辑
准备
需要提前安装7z 软件 下载地址: https://www.7-zip.org/
应用
适用于某网盘上传与下载
使用方法
压缩方法
-
拖拽式
-
目录式
把打包的所有文件放到新建目录下,双击自释放工具.bat
解压方法
- 双击式:直接在当前目录下双击解压
- 右键式
部分代码
@echo off
setlocal enabledelayedexpansion
:: ============================================================================
:: 脚本名称: 智能打包为自释放7z文件
:: 功能描述:
:: 1. 自动查找 7z.exe (先查PATH, 再查注册表)
:: 2. 等待用户拖放文件/文件夹
:: 3. 根据拖放内容智能选择打包方式
:: 4. 生成带时间戳的自释放 .exe 文件
:: ============================================================================
:: --- 步骤 1: 查找 7z.exe ---
:: 定义注册表路径和要查询的值名
set "regPath=HKEY_LOCAL_MACHINE\SOFTWARE\7-Zip"
set "valueName=Path1"
set "value64Name=Path64"
set "SEVEN_ZIP_CMD="
echo [步骤 1/4] 正在查找 7z.exe...
:: 方法一: 在系统环境变量 PATH 中查找
for /f "delims=" %%i in ('where 7z.exe 2^>nul') do (
set "SEVEN_ZIP_CMD=%%i"
goto :found_seven_zip
)
:: 方法二: 如果 PATH 中没找到,则查询注册表
echo - 在系统PATH中未找到,正在查询注册表...
:: 查询注册表获取Path值
for /f "skip=2 tokens=2*" %%a in ('reg query "%regPath%" /v "%valueName%" 2^>nul') do (
set "SEVEN_ZIP_PATH=%%b"
)
:: 检查 64 位注册表路径是否成功
if defined SEVEN_ZIP_PATH (
set "SEVEN_ZIP_CMD=!SEVEN_ZIP_PATH!\7z.exe"
if exist "!SEVEN_ZIP_CMD!" (
goto :found_seven_zip
) else (
goto :no_found_seven_zip
)
)
:: 方法三: 如果上一步失败,尝试 32 位应用的注册表路径 (WOW6432Node)
for /f "skip=2 tokens=2*" %%a in ('reg query "%regPath%" /v "%value64Name%" 2^>nul') do (
set "SEVEN_ZIP_PATH=%%b"
)
:: 检查 32 位注册表路径是否成功
if defined SEVEN_ZIP_PATH (
set "SEVEN_ZIP_CMD=!SEVEN_ZIP_PATH!\7z.exe"
if exist "!SEVEN_ZIP_CMD!" (
goto :found_seven_zip
) else (
goto :no_found_seven_zip
)
)
:no_found_seven_zip
:: 如果所有方法都失败,则报错退出
echo.
echo [错误] 未能找到 7z.exe。
echo 请确保 7-Zip 已正确安装,或者其安装目录已添加到系统环境变量 PATH 中。
echo.
pause
exit /b 1
:found_seven_zip
echo - 成功找到: !SEVEN_ZIP_CMD!
echo.
:: --- 步骤 2: 等待用户拖放文件/文件夹 ---
echo [步骤 2/4] 请将一个或多个文件/文件夹拖放到此窗口,然后按 Enter:
set "DropItems=%*"
文件下载
自释放7z文件打包工具.txt
(56 Bytes, 下载次数: 125)
源码下载
https://github.com/androllen/bat-toolkit
如果觉得不错,请给个热心~
|