驱动导出 重装系统前导出当前系统驱动
2026-06-07 10:25:03    3    0    0
maker


dism内置命令两种方法导出驱动对比:

 
场景命令示例适用情况
当前系统正常dism /online /export-driver /destination:D:\Backup 系统能正常启动和登录
当前系统损坏dism /Image:D:\ /export-driver /destination:E:\Backup 系统蓝屏、无法启动


驱动导出到D盘.bat 脚本内容:

@echo off
REM utf8编码设置
REM chcp 65001 >nul
REM GB2312编码设置
chcp 936 >nul
title 驱动导出工具 - 支持正常系统与WinPE

REM 声明变量
set "DRV_TOOL=驱动导出工具"
set "NORMAL_MODE=0"
set "DEST_PATH="
set "OFFLINE_DRIVE="
set "DEFAULT_PATH=D:\DriversBackup"

:begin
cls
echo ===============================================
echo        %DRV_TOOL% v1.0
echo ===============================================
echo.

REM 判断是否为WinPE环境(多种检测方法)
set "IS_PE=0"

REM 方法1:检查是否存在WinPE专用文件
if exist "%SystemRoot%\System32\winpe.exe" set "IS_PE=1"
if exist "%SystemRoot%\System32\startnet.cmd" set "IS_PE=1"

REM 方法2:检查注册表项(PE环境通常没有完整注册表)
reg query "HKLM\SYSTEM\CurrentControlSet\Control" | findstr /i "WinPE" >nul 2>nul
if %errorlevel%==0 set "IS_PE=1"

REM 方法3:检查系统盘盘符(正常系统一般在C:,且不能是X:或RAMDisk)
if /i "%SystemDrive%"=="X:" set "IS_PE=1"

if "%IS_PE%"=="1" (
    echo [环境检测] 当前运行在 WinPE 环境中。
    echo -----------------------------------------------
    set "NORMAL_MODE=0"
) else (
    echo [环境检测] 当前运行在 正常Windows 环境中。
    echo -----------------------------------------------
    set "NORMAL_MODE=1"
)

echo.

REM 询问用户导出模式
:select_mode
echo 请选择驱动导出模式:
echo.
if "%NORMAL_MODE%"=="1" (
    echo   [1] 在线导出 - 备份当前系统的所有第三方驱动 (推荐)
    echo.
)
echo   [2] 离线导出 - 备份已损坏/无法启动系统的驱动(需要进入WinPE)
echo   [3] 退出
echo.
set /p "choice=请输入数字 (1/2/3): "

if "%choice%"=="1" (
    if "%NORMAL_MODE%"=="1" (
        call :export_online
    ) else (
        echo 当前环境不支持在线导出!请重新选择。
        ping -n 2 127.0.0.1 >nul
        goto select_mode
    )
) else if "%choice%"=="2" (
    call :export_offline
) else if "%choice%"=="3" (
    exit /b
) else (
    echo 输入无效,请重新选择。
    ping -n 2 127.0.0.1 >nul
    goto select_mode
)

pause
goto begin

REM ========== 在线导出函数 ==========
:export_online
cls
echo ===============================================
echo           在线驱动导出模式
echo ===============================================
echo 说明:将备份当前运行系统的所有第三方驱动。
echo.
echo 默认路径: %DEFAULT_PATH%
echo 提示:直接回车将使用默认路径,或输入自定义路径
echo.

:get_dest_online
set "DEST_PATH="
set /p "DEST_PATH=请输入备份保存路径 [%DEFAULT_PATH%]: "

REM 如果用户直接回车,使用默认路径
if "%DEST_PATH%"=="" (
    set "DEST_PATH=%DEFAULT_PATH%"
    echo 已使用默认路径: %DEST_PATH%
)

REM 去除路径中的首尾引号
set "DEST_PATH=%DEST_PATH:"=%"

REM 创建目标文件夹(如果不存在)
if not exist "%DEST_PATH%" (
    echo 目标路径不存在,正在创建...
    mkdir "%DEST_PATH%" 2>nul
    if errorlevel 1 (
        echo 创建失败!请确认路径有效或有足够权限。
        echo.
        goto get_dest_online
    )
)

echo.
echo 正在导出驱动,请稍候...
echo -----------------------------------------------

REM 执行在线导出命令
dism /online /export-driver /destination:"%DEST_PATH%"

if %errorlevel%==0 (
    echo.
    echo ========== 导出成功! ==========
    echo 驱动已保存至: %DEST_PATH%
) else (
    echo.
    echo ========== 导出失败! ==========
    echo 可能原因:
    echo 1. 权限不足(请以管理员身份运行此脚本)
    echo 2. 目标路径不可写或磁盘空间不足
    echo 3. 系统组件异常
)

echo.
echo 按任意键返回主菜单...
pause >nul
goto begin

REM ========== 离线导出函数 ==========
:export_offline
cls
echo ===============================================
echo           离线驱动导出模式
echo ===============================================
echo 说明:
echo 1. 适用于已损坏/无法启动的系统(当前在WinPE中运行)
echo 2. 需要知道目标系统安装盘的位置
echo 3. 建议先确认盘符(可打开资源管理器查看)
echo.

REM 列出当前可用盘符
echo [当前可用盘符列表]
echo -----------------------------------------------
for %%i in (C D E F G H I J K L M N O P Q R S T U V W X Y Z) do (
    if exist %%i:\ (
        if exist %%i:\Windows\System32 (
            echo   %%i: - 可能包含Windows系统
        ) else if exist %%i:\ (
            echo   %%i: - 普通分区
        )
    )
)
echo -----------------------------------------------
echo 提示:损坏的系统分区通常仍能看到 Windows 文件夹
echo.

:get_offline_drive
set /p "OFFLINE_DRIVE=请输入目标系统安装盘盘符 (只输入字母,如 D): "
set "OFFLINE_DRIVE=%OFFLINE_DRIVE:~0,1%"

REM 验证输入是否合法
if "%OFFLINE_DRIVE%"=="" (
    echo 盘符不能为空!
    goto get_offline_drive
)

REM 检查盘符是否为字母
echo %OFFLINE_DRIVE%| findstr /r "^[A-Za-z]$" >nul
if errorlevel 1 (
    echo 请输入单个字母 (A-Z)!
    goto get_offline_drive
)

REM 转为大写
for %%i in (A B C D E F G H I J K L M N O P Q R S T U V W X Y Z) do (
    if /i "%OFFLINE_DRIVE%"=="%%i" set "OFFLINE_DRIVE=%%i"
)

REM 检查目标盘符是否存在
if not exist %OFFLINE_DRIVE%:\ (
    echo 盘符 %OFFLINE_DRIVE%: 不存在!请重新输入。
    goto get_offline_drive
)

REM 检查是否存在系统必要的标志(可选,但不强制)
if not exist %OFFLINE_DRIVE%:\Windows\System32\config\SOFTWARE (
    echo 警告:%OFFLINE_DRIVE%: 可能不包含完整的Windows系统注册表
    echo 如果确认这是目标系统盘,请按 Y 继续,否则按 N 重新输入。
    set /p "confirm=是否继续? (Y/N): "
    if /i not "!confirm!"=="Y" (
        goto get_offline_drive
    )
)

echo.
echo 默认保存路径: %DEFAULT_PATH%
echo 提示:直接回车将使用默认路径,或输入自定义路径
echo.

:get_dest_offline
set "DEST_PATH="
set /p "DEST_PATH=请输入备份保存路径 [%DEFAULT_PATH%]: "

REM 如果用户直接回车,使用默认路径
if "%DEST_PATH%"=="" (
    set "DEST_PATH=%DEFAULT_PATH%"
    echo 已使用默认路径: %DEST_PATH%
)

set "DEST_PATH=%DEST_PATH:"=%"

REM 创建目标文件夹
if not exist "%DEST_PATH%" (
    echo 目标路径不存在,正在创建...
    mkdir "%DEST_PATH%" 2>nul
    if errorlevel 1 (
        echo 创建失败!请确认路径有效。
        echo.
        goto get_dest_offline
    )
)

echo.
echo 正在导出离线系统驱动...
echo 目标系统盘符: %OFFLINE_DRIVE%:
echo 保存路径: %DEST_PATH%
echo -----------------------------------------------

REM 执行离线导出命令(注意:Dism 需要支持离线处理)
dism /image:%OFFLINE_DRIVE%:\ /export-driver /destination:"%DEST_PATH%"

if %errorlevel%==0 (
    echo.
    echo ========== 导出成功! ==========
    echo 驱动已从系统盘 %OFFLINE_DRIVE%: 导出至 %DEST_PATH%
) else (
    echo.
    echo ========== 导出失败! ==========
    echo 可能原因:
    echo 1. 目标路径权限不足
    echo 2. 指定盘符不是有效的Windows安装
    echo 3. Dism 服务未正确初始化
    echo 4. 当前PE环境可能缺少 Dism 组件
)

echo.
echo 按任意键返回主菜单...
pause >nul
exit






@echo off
REM utf8编码设置
REM chcp 65001 >nul
REM GB2312编码设置
chcp 936 >nul
title 驱动导出工具 - 支持正常系统与WinPE

REM 声明变量
set "DRV_TOOL=驱动导出工具"
set "NORMAL_MODE=0"
set "DEST_PATH="
set "OFFLINE_DRIVE="
set "DEFAULT_PATH=D:\DriversBackup"

:begin
cls
echo ===============================================
echo        %DRV_TOOL% v1.0
echo ===============================================
echo.

REM 判断是否为WinPE环境(多种检测方法)
set "IS_PE=0"

REM 方法1:检查是否存在WinPE专用文件
if exist "%SystemRoot%\System32\winpe.exe" set "IS_PE=1"
if exist "%SystemRoot%\System32\startnet.cmd" set "IS_PE=1"

REM 方法2:检查注册表项(PE环境通常没有完整注册表)
reg query "HKLM\SYSTEM\CurrentControlSet\Control" | findstr /i "WinPE" >nul 2>nul
if %errorlevel%==0 set "IS_PE=1"

REM 方法3:检查系统盘盘符(正常系统一般在C:,且不能是X:或RAMDisk)
if /i "%SystemDrive%"=="X:" set "IS_PE=1"

if "%IS_PE%"=="1" (
    echo [环境检测] 当前运行在 WinPE 环境中。
    echo -----------------------------------------------
    set "NORMAL_MODE=0"
) else (
    echo [环境检测] 当前运行在 正常Windows 环境中。
    echo -----------------------------------------------
    set "NORMAL_MODE=1"
)

echo.

REM 询问用户导出模式
:select_mode
echo 请选择驱动导出模式:
echo.
if "%NORMAL_MODE%"=="1" (
    echo   [1] 在线导出 - 备份当前系统的所有第三方驱动 (推荐)
    echo.
)
echo   [2] 离线导出 - 备份已损坏/无法启动系统的驱动(需要进入WinPE)
echo   [3] 退出
echo.
set /p "choice=请输入数字 (1/2/3): "

if "%choice%"=="1" (
    if "%NORMAL_MODE%"=="1" (
        call :export_online
    ) else (
        echo 当前环境不支持在线导出!请重新选择。
        ping -n 2 127.0.0.1 >nul
        goto select_mode
    )
) else if "%choice%"=="2" (
    call :export_offline
) else if "%choice%"=="3" (
    exit /b
) else (
    echo 输入无效,请重新选择。
    ping -n 2 127.0.0.1 >nul
    goto select_mode
)

pause
goto begin

REM ========== 在线导出函数 ==========
:export_online
cls
echo ===============================================
echo           在线驱动导出模式
echo ===============================================
echo 说明:将备份当前运行系统的所有第三方驱动。
echo.
echo 默认路径: %DEFAULT_PATH%
echo 提示:直接回车将使用默认路径,或输入自定义路径
echo.

:get_dest_online
set "DEST_PATH="
set /p "DEST_PATH=请输入备份保存路径 [%DEFAULT_PATH%]: "

REM 如果用户直接回车,使用默认路径
if "%DEST_PATH%"=="" (
    set "DEST_PATH=%DEFAULT_PATH%"
    echo 已使用默认路径: %DEST_PATH%
)

REM 去除路径中的首尾引号
set "DEST_PATH=%DEST_PATH:"=%"

REM 创建目标文件夹(如果不存在)
if not exist "%DEST_PATH%" (
    echo 目标路径不存在,正在创建...
    mkdir "%DEST_PATH%" 2>nul
    if errorlevel 1 (
        echo 创建失败!请确认路径有效或有足够权限。
        echo.
        goto get_dest_online
    )
)

echo.
echo 正在导出驱动,请稍候...
echo -----------------------------------------------

REM 执行在线导出命令
dism /online /export-driver /destination:"%DEST_PATH%"

if %errorlevel%==0 (
    echo.
    echo ========== 导出成功! ==========
    echo 驱动已保存至: %DEST_PATH%
) else (
    echo.
    echo ========== 导出失败! ==========
    echo 可能原因:
    echo 1. 权限不足(请以管理员身份运行此脚本)
    echo 2. 目标路径不可写或磁盘空间不足
    echo 3. 系统组件异常
)

echo.
echo 按任意键返回主菜单...
pause >nul
goto begin

REM ========== 离线导出函数 ==========
:export_offline
cls
echo ===============================================
echo           离线驱动导出模式
echo ===============================================
echo 说明:
echo 1. 适用于已损坏/无法启动的系统(当前在WinPE中运行)
echo 2. 需要知道目标系统安装盘的位置
echo 3. 建议先确认盘符(可打开资源管理器查看)
echo.

REM 列出当前可用盘符
echo [当前可用盘符列表]
echo -----------------------------------------------
for %%i in (C D E F G H I J K L M N O P Q R S T U V W X Y Z) do (
    if exist %%i:\ (
        if exist %%i:\Windows\System32 (
            echo   %%i: - 可能包含Windows系统
        ) else if exist %%i:\ (
            echo   %%i: - 普通分区
        )
    )
)
echo -----------------------------------------------
echo 提示:损坏的系统分区通常仍能看到 Windows 文件夹
echo.

:get_offline_drive
set /p "OFFLINE_DRIVE=请输入目标系统安装盘盘符 (只输入字母,如 D): "
set "OFFLINE_DRIVE=%OFFLINE_DRIVE:~0,1%"

REM 验证输入是否合法
if "%OFFLINE_DRIVE%"=="" (
    echo 盘符不能为空!
    goto get_offline_drive
)

REM 检查盘符是否为字母
echo %OFFLINE_DRIVE%| findstr /r "^[A-Za-z]$" >nul
if errorlevel 1 (
    echo 请输入单个字母 (A-Z)!
    goto get_offline_drive
)

REM 转为大写
for %%i in (A B C D E F G H I J K L M N O P Q R S T U V W X Y Z) do (
    if /i "%OFFLINE_DRIVE%"=="%%i" set "OFFLINE_DRIVE=%%i"
)

REM 检查目标盘符是否存在
if not exist %OFFLINE_DRIVE%:\ (
    echo 盘符 %OFFLINE_DRIVE%: 不存在!请重新输入。
    goto get_offline_drive
)

REM 检查是否存在系统必要的标志(可选,但不强制)
if not exist %OFFLINE_DRIVE%:\Windows\System32\config\SOFTWARE (
    echo 警告:%OFFLINE_DRIVE%: 可能不包含完整的Windows系统注册表
    echo 如果确认这是目标系统盘,请按 Y 继续,否则按 N 重新输入。
    set /p "confirm=是否继续? (Y/N): "
    if /i not "!confirm!"=="Y" (
        goto get_offline_drive
    )
)

echo.
echo 默认保存路径: %DEFAULT_PATH%
echo 提示:直接回车将使用默认路径,或输入自定义路径
echo.

:get_dest_offline
set "DEST_PATH="
set /p "DEST_PATH=请输入备份保存路径 [%DEFAULT_PATH%]: "

REM 如果用户直接回车,使用默认路径
if "%DEST_PATH%"=="" (
    set "DEST_PATH=%DEFAULT_PATH%"
    echo 已使用默认路径: %DEST_PATH%
)

set "DEST_PATH=%DEST_PATH:"=%"

REM 创建目标文件夹
if not exist "%DEST_PATH%" (
    echo 目标路径不存在,正在创建...
    mkdir "%DEST_PATH%" 2>nul
    if errorlevel 1 (
        echo 创建失败!请确认路径有效。
        echo.
        goto get_dest_offline
    )
)

echo.
echo 正在导出离线系统驱动...
echo 目标系统盘符: %OFFLINE_DRIVE%:
echo 保存路径: %DEST_PATH%
echo -----------------------------------------------

REM 执行离线导出命令(注意:Dism 需要支持离线处理)
dism /image:%OFFLINE_DRIVE%:\ /export-driver /destination:"%DEST_PATH%"

if %errorlevel%==0 (
    echo.
    echo ========== 导出成功! ==========
    echo 驱动已从系统盘 %OFFLINE_DRIVE%: 导出至 %DEST_PATH%
) else (
    echo.
    echo ========== 导出失败! ==========
    echo 可能原因:
    echo 1. 目标路径权限不足
    echo 2. 指定盘符不是有效的Windows安装
    echo 3. Dism 服务未正确初始化
    echo 4. 当前PE环境可能缺少 Dism 组件
)

echo.
echo 按任意键返回主菜单...
pause >nul
exit


Pre: No Post

Next: 驱动精灵标准版 不限速 解决驱动问题

3
Table of content