欢迎光临百色市聚强科技
详情描述

1. 基础批处理脚本

@echo off
chcp 65001 >nul
setlocal enabledelayedexpansion

title 批量解压及文件合并工具
color 0A

echo =========================================
echo     批量解压及文件合并工具
echo =========================================
echo.

REM 设置工作目录(当前目录)
set "workdir=%~dp0"
echo 工作目录: %workdir%
echo.

REM 创建输出目录
set "outputdir=%workdir%合并结果"
if not exist "%outputdir%" mkdir "%outputdir%"

REM 支持的压缩格式
echo 支持的压缩格式: .zip, .rar, .7z
echo.

REM 解压工具检查
where 7z >nul 2>nul
if errorlevel 1 (
    echo 错误: 未找到 7-Zip,请安装后重试!
    echo 下载地址: https://www.7-zip.org/
    pause
    exit /b 1
)

echo 正在搜索压缩文件...
echo.

set filecount=0
set extractcount=0

REM 遍历所有压缩文件
for %%f in (*.zip *.rar *.7z) do (
    set /a filecount+=1
    echo [!filecount!] 处理文件: %%f

    REM 创建临时解压目录
    set "tempdir=%workdir%temp_%%~nf"
    if not exist "!tempdir!" mkdir "!tempdir!"

    REM 使用7z解压
    echo 正在解压...
    7z x "%%f" -o"!tempdir!" -y >nul

    if errorlevel 0 (
        set /a extractcount+=1
        echo 解压成功: %%f
    ) else (
        echo 解压失败: %%f
    )
    echo.
)

echo =========================================
echo 解压完成:共找到 %filecount% 个压缩文件,成功解压 %extractcount% 个
echo =========================================
echo.

echo 按任意键开始合并文件...
pause >nul
echo.

REM 文件合并功能
echo 请选择合并方式:
echo 1. 合并所有文本文件(.txt, .log, .ini, .cfg等)
echo 2. 合并所有CSV/TSV文件
echo 3. 合并所有特定扩展名文件
echo 4. 合并所有文件(不推荐)
echo 5. 跳过合并,仅解压
echo.

set /p choice="请输入选择(1-5): "

if "%choice%"=="5" (
    echo 跳过文件合并
    goto :cleanup
)

REM 设置要合并的文件扩展名
if "%choice%"=="1" (
    set "extensions=*.txt *.log *.ini *.cfg *.xml *.json *.yaml *.yml"
    set "mergefile=合并文本文件.txt"
) else if "%choice%"=="2" (
    set "extensions=*.csv *.tsv"
    set "mergefile=合并CSV文件.csv"
) else if "%choice%"=="3" (
    echo.
    set /p customext="请输入要合并的文件扩展名(如:*.txt *.log): "
    set "extensions=%customext%"
    set "mergefile=合并自定义文件.txt"
) else (
    set "extensions=*.*"
    set "mergefile=合并所有文件.txt"
)

echo.
echo 正在合并 %extensions% 文件...
echo 输出文件: %outputdir%\%mergefile%
echo.

REM 清空或创建合并文件
type nul > "%outputdir%\%mergefile%"

set mergecount=0
set filelist=""

REM 查找所有临时目录中的文件
for /d %%d in (%workdir%temp_*) do (
    echo 正在处理目录: %%d
    for %%e in (%extensions%) do (
        for /r "%%d" %%f in (%%e) do (
            if exist "%%f" (
                set /a mergecount+=1
                echo [!mergecount!] 添加: %%~nxf

                REM 添加分隔线
                echo. >> "%outputdir%\%mergefile%"
                echo ========================================= >> "%outputdir%\%mergefile%"
                echo 文件: %%~nxf (来自: %%d) >> "%outputdir%\%mergefile%"
                echo ========================================= >> "%outputdir%\%mergefile%"
                echo. >> "%outputdir%\%mergefile%"

                REM 合并文件内容
                type "%%f" >> "%outputdir%\%mergefile%"
                echo. >> "%outputdir%\%mergefile%"
            )
        )
    )
)

echo.
echo =========================================
echo 合并完成!
echo 共合并 %mergecount% 个文件
echo 输出文件: %outputdir%\%mergefile%
echo =========================================
echo.

:cleanup
echo 是否清理临时文件?
set /p cleantemp="清理临时解压文件?(Y/N, 默认Y): "
if /i "%cleantemp%"=="" set "cleantemp=Y"

if /i "%cleantemp%"=="Y" (
    echo 正在清理临时文件...
    for /d %%d in (%workdir%temp_*) do (
        rd /s /q "%%d" 2>nul
    )
    echo 临时文件已清理!
)

echo.
echo 操作完成!
echo 输出目录: %outputdir%
pause

2. 高级版本 - 支持子目录和更多选项

@echo off
chcp 65001 >nul
setlocal enabledelayedexpansion

title 高级批量解压合并工具
color 0A

:menu
cls
echo ================================================
echo          高级批量解压合并工具
echo ================================================
echo.
echo 1. 批量解压当前目录所有压缩文件
echo 2. 批量解压指定目录的压缩文件
echo 3. 仅合并已解压的文件(不重新解压)
echo 4. 仅解压不合并
echo 5. 配置选项
echo 6. 退出
echo.

set /p choice="请选择操作(1-6): "

if "%choice%"=="1" goto extract_current
if "%choice%"=="2" goto extract_specified
if "%choice%"=="3" goto merge_only
if "%choice%"=="4" goto extract_only
if "%choice%"=="5" goto config
if "%choice%"=="6" exit

:extract_current
set "source_dir=%~dp0"
goto extract_process

:extract_specified
echo.
set /p source_dir="请输入源目录路径: "
if not exist "%source_dir%" (
    echo 目录不存在!
    pause
    goto menu
)
goto extract_process

:merge_only
goto merge_process

:extract_only
set "merge_mode=false"
goto extract_process

:config
cls
echo ================================================
echo               配置选项
echo ================================================
echo.
echo 当前配置:
echo 压缩密码(如果压缩包有密码): %password%
echo 是否递归子目录: %recursive%
echo 解压后删除原压缩包: %delete_archive%
echo.
echo 1. 设置压缩密码
echo 2. 切换递归模式
echo 3. 切换删除原文件模式
echo 4. 返回主菜单
echo.

set /p config_choice="请选择: "

if "%config_choice%"=="1" (
    set /p password="请输入压缩密码(无密码直接回车): "
)
if "%config_choice%"=="2" (
    if "%recursive%"=="true" (
        set "recursive=false"
    ) else (
        set "recursive=true"
    )
)
if "%config_choice%"=="3" (
    if "%delete_archive%"=="true" (
        set "delete_archive=false"
    ) else (
        set "delete_archive=true"
    )
)
goto config

:extract_process
if not defined merge_mode set "merge_mode=true"
if not defined recursive set "recursive=true"
if not defined delete_archive set "delete_archive=false"
if not defined password set "password="

REM 检查7-Zip
where 7z >nul 2>nul
if errorlevel 1 (
    echo 错误: 需要安装 7-Zip!
    echo 请从 https://www.7-zip.org/ 下载安装
    pause
    goto menu
)

REM 创建输出目录
set "output_dir=%source_dir%_extracted"
if not exist "%output_dir%" mkdir "%output_dir%"

set "temp_dir=%output_dir%\temp"
if not exist "%temp_dir%" mkdir "%temp_dir%"

echo.
echo 开始批量解压...
echo 源目录: %source_dir%
echo 输出目录: %output_dir%
echo.

set count=0
set success=0
set fail=0

REM 搜索压缩文件
if "%recursive%"=="true" (
    REM 递归搜索
    for /r "%source_dir%" %%f in (*.zip *.rar *.7z *.tar *.gz *.bz2) do (
        call :extract_file "%%f" "%%~dpf"
    )
) else (
    REM 仅当前目录
    for %%f in ("%source_dir%\*.zip" "%source_dir%\*.rar" "%source_dir%\*.7z") do (
        call :extract_file "%%f" "%source_dir%"
    )
)

echo.
echo ================================================
echo 解压统计:
echo 总文件数: %count%
echo 成功: %success%
echo 失败: %fail%
echo ================================================

if "%merge_mode%"=="true" (
    echo.
    call :merge_process
)

if "%delete_archive%"=="true" (
    echo.
    echo 正在删除原压缩文件...
    if "%recursive%"=="true" (
        del /q "%source_dir%\*.zip" "%source_dir%\*.rar" "%source_dir%\*.7z" 2>nul
    )
)

echo.
pause
goto menu

:extract_file
set "archive=%~1"
set "arcdir=%~2"

set /a count+=1
echo [!count!] 处理: %%~nxa

REM 创建解压子目录
set "target_dir=%temp_dir%\extract_!count!"
mkdir "!target_dir!" 2>nul

REM 解压命令
if "%password%"=="" (
    7z x "!archive!" -o"!target_dir!" -y >nul
) else (
    7z x "!archive!" -o"!target_dir!" -p%password% -y >nul
)

if errorlevel 0 (
    set /a success+=1
    echo     状态: 成功
) else (
    set /a fail+=1
    echo     状态: 失败
)

goto :eof

:merge_process
echo.
echo 开始合并文件...
echo.

echo 选择合并的文件类型:
echo 1. 文本文件 (.txt, .log, .md, .ini, .cfg)
echo 2. 代码文件 (.java, .py, .cpp, .cs, .js)
echo 3. 数据文件 (.csv, .tsv, .xml, .json)
echo 4. 所有文件
echo 5. 自定义扩展名
echo.

set /p merge_choice="请选择(1-5): "

if "%merge_choice%"=="1" (
    set "patterns=*.txt *.log *.md *.ini *.cfg *.inf *.bat *.sh"
    set "outfile=合并_文本文件.txt"
) else if "%merge_choice%"=="2" (
    set "patterns=*.java *.py *.cpp *.c *.h *.cs *.js *.html *.css *.php"
    set "outfile=合并_代码文件.txt"
) else if "%merge_choice%"=="3" (
    set "patterns=*.csv *.tsv *.xml *.json *.yml *.yaml"
    set "outfile=合并_数据文件.txt"
) else if "%merge_choice%"=="4" (
    set "patterns=*.*"
    set "outfile=合并_所有文件.txt"
) else (
    echo.
    set /p patterns="请输入文件扩展名(用空格分隔): "
    set "outfile=合并_自定义文件.txt"
)

echo.
echo 正在合并文件到: %output_dir%\!outfile!
echo.

REM 创建合并文件
echo // ============================================== > "%output_dir%\!outfile!"
echo // 文件合并结果                                  >> "%output_dir%\!outfile!"
echo // 生成时间: %date% %time%                       >> "%output_dir%\!outfile!"
echo // 源目录: %source_dir%                          >> "%output_dir%\!outfile!"
echo // ============================================== >> "%output_dir%\!outfile!"
echo. >> "%output_dir%\!outfile!"

set merge_count=0

REM 遍历临时目录合并文件
for /r "%temp_dir%" %%f in (!patterns!) do (
    if exist "%%f" (
        set /a merge_count+=1
        echo [!merge_count!] 添加: %%~nxf

        echo. >> "%output_dir%\!outfile!"
        echo ============================================== >> "%output_dir%\!outfile!"
        echo 文件名: %%~nxf >> "%output_dir%\!outfile!"
        echo 路径: %%f >> "%output_dir%\!outfile!"
        echo 大小: %%~zf 字节 >> "%output_dir%\!outfile!"
        echo ============================================== >> "%output_dir%\!outfile!"
        echo. >> "%output_dir%\!outfile!"

        type "%%f" >> "%output_dir%\!outfile!"
        echo. >> "%output_dir%\!outfile!"
    )
)

echo.
echo ================================================
echo 合并完成!
echo 共合并 !merge_count! 个文件
echo 输出文件: %output_dir%\!outfile!
echo ================================================

echo.
set /p clean_temp="是否清理临时文件?(Y/N): "
if /i "!clean_temp!"=="Y" (
    rd /s /q "%temp_dir%" 2>nul
    echo 临时文件已清理!
)

goto :eof

3. 简易版本(快速使用)

@echo off
chcp 65001 >nul

echo 正在批量解压并合并文本文件...

REM 检查7-Zip
where 7z >nul 2>nul || (
    echo 请先安装7-Zip: https://www.7-zip.org/
    pause
    exit
)

REM 创建输出目录
set "output=%~dp0合并结果"
if not exist "%output%" mkdir "%output%"

REM 解压所有压缩文件
for %%z in (*.zip *.rar *.7z) do (
    echo 解压: %%z
    7z x "%%z" -o"%output%\%%~nz" -y >nul
)

REM 合并所有文本文件
echo 正在合并文本文件...
type nul > "%output%\合并结果.txt"

for /r "%output%" %%f in (*.txt *.log *.ini *.cfg) do (
    echo. >> "%output%\合并结果.txt"
    echo ============ %%f ============ >> "%output%\合并结果.txt"
    type "%%f" >> "%output%\合并结果.txt"
)

echo 完成!
echo 结果保存在: %output%\合并结果.txt
pause

使用说明:

准备工作:

安装 7-Zip:从官网 https://www.7-zip.org/ 下载安装 放置脚本:将批处理文件放在需要处理的文件夹中 备份数据:建议先备份原始文件

主要功能:

  • ✅ 批量解压 ZIP、RAR、7Z 等格式
  • ✅ 自动创建分类目录
  • ✅ 文件内容合并
  • ✅ 支持有密码的压缩包
  • ✅ 清理临时文件选项
  • ✅ 详细的操作日志

使用方法:

将脚本保存为 extract_merge.bat 双击运行 按照菜单提示操作

注意事项:

  • 确保有足够的磁盘空间
  • 大文件合并可能需要较长时间
  • 二进制文件不适合文本方式合并
  • 建议先测试少量文件

您可以根据需要修改脚本中的文件扩展名或解压参数!

相关帖子
打工人 KPI 那条
打工人 KPI 那条"基准线"是谁定的,定高了定低了谁吃亏?
自动泊车功能普及的今天,我们还需要掌握方向盘打死的技巧吗?
自动泊车功能普及的今天,我们还需要掌握方向盘打死的技巧吗?
一套完整的纪念币系列收藏,背后通常蕴含着怎样的主题故事与设计脉络?
一套完整的纪念币系列收藏,背后通常蕴含着怎样的主题故事与设计脉络?
2026年,男性在支持配偶应对职场“隐孕”压力中可以扮演什么角色?
2026年,男性在支持配偶应对职场“隐孕”压力中可以扮演什么角色?
百色市汽车抵押消费贷款-汽车抵押贷款办理押证不押车,银行抵押担保贷款
百色市汽车抵押消费贷款-汽车抵押贷款办理押证不押车,银行抵押担保贷款
鸡西市押证不押车贷款@车辆贷款公司,有车即可贷,可不押车
鸡西市押证不押车贷款@车辆贷款公司,有车即可贷,可不押车
自由职业者车贷利率怎么算?收入认定标准解析
自由职业者车贷利率怎么算?收入认定标准解析
象山县车辆大本抵押贷款-汽车不押车贷款,这里靠谱
象山县车辆大本抵押贷款-汽车不押车贷款,这里靠谱
泰州市房产商业银行抵押贷款|有房就能贷款,过桥垫资贷款
泰州市房产商业银行抵押贷款|有房就能贷款,过桥垫资贷款
婚前财产协议做公证,2026年这类民事协议公证费按什么标准收?
婚前财产协议做公证,2026年这类民事协议公证费按什么标准收?
自由职业者通过网络平台承接短期项目,平台预扣的税款与年度汇算结果不符该怎么办?
自由职业者通过网络平台承接短期项目,平台预扣的税款与年度汇算结果不符该怎么办?
在弹性工作安排中,怎样与同事约定合适的线上沟通时间以避免冲突?
在弹性工作安排中,怎样与同事约定合适的线上沟通时间以避免冲突?
诸暨市汽车抵押生意贷款-汽车抵押借款电话,正规抵押贷款门店
诸暨市汽车抵押生意贷款-汽车抵押借款电话,正规抵押贷款门店
佳木斯市抵押汽车应急借款@汽车抵押贷款联系电话,抵押贷款办理
佳木斯市抵押汽车应急借款@汽车抵押贷款联系电话,抵押贷款办理
嘉兴市房产二押贷款|房屋抵押公司,民营企业贷款
嘉兴市房产二押贷款|房屋抵押公司,民营企业贷款
个人如何了解自己所在地区长护险的具体政策与申请条件?
个人如何了解自己所在地区长护险的具体政策与申请条件?
在装修期间,如何有效监督工人并防止建筑材料从高空意外坠落?
在装修期间,如何有效监督工人并防止建筑材料从高空意外坠落?
余姚市抵押车绿本贷款-车辆抵押贷款门店办理,银行抵押担保贷款
余姚市抵押车绿本贷款-车辆抵押贷款门店办理,银行抵押担保贷款
丽江市全款房抵押银行贷款|房屋抵押贷款,企业税务贷
丽江市全款房抵押银行贷款|房屋抵押贷款,企业税务贷
脑机接口技术将如何重新定义“人机交互”以及我们与智能家居的关系?
脑机接口技术将如何重新定义“人机交互”以及我们与智能家居的关系?