在重新安装Windows操作系统时,原来安装的驱动程序如果可以备份下来,装完系统后就可以非常方便的通过设备管理器把未被识别的设备驱动安装上。如果通过第三方软件,很容易被安装垃圾软件,可以通过脚本实现。
此脚本支持32位和64位Windows,脚本所在目录下的x86(32位)和x64(64位)目录存放备份出来的驱动程序。
脚本如下:
@echooff
cls
::获得管理员权限的批命令
:--------------------------------------------------------------------------------
REM-->检查权限
>nul2>&1"%SYSTEMROOT%\system32\cacls.exe""%SYSTEMROOT%\system32\config\system"
REM-->如果设置了错误标志,表明没有管理员权限。
if'%errorlevel%'NEQ'0'(
echo正在请求管理员权限...
gotoUACPrompt
)else(gotogotAdmin)
:UACPrompt
echoSetUAC=CreateObject^("Shell.Application"^)>"%temp%\getadmin.vbs"
echoUAC.ShellExecute"%~s0","","","runas",1>>"%temp%\getadmin.vbs"
"%temp%\getadmin.vbs"
exit/B
:gotAdmin
ifexist"%temp%\getadmin.vbs"(del"%temp%\getadmin.vbs")
pushd"%CD%"
CD/D"%~dp0"
:-----------------------------------------------------------------------------
if"%PROCESSOR_ARCHITECTURE%"=="x86"(
setOS_TP=x86
)else(
setOS_TP=x64
)
echo正在备份第三方驱动程序,请稍候...
echo.
setlocalenabledelayedexpansion
setWINDRV=%windir%\System32\DriverStore\FileRepository
Dism/Online/Get-Drivers/Format:Table|findstr/I".inf">tmp0.txt
@echooff>tmp1.txt
for/f"tokens=4,2delims=^|"%%iin(tmp0.txt)do(
echo%%j,%%i>>tmp1.txt
)
sorttmp1.txt>tmp2.txt
ifexist%~dp0%OS_TP%rmdir/S/Q%~dp0%OS_TP%
for/f"delims=,"%%iin(tmp2.txt)do(
ifnotdefined%%iset%%i=A&mkdir%~dp0%OS_TP%\%%i
)
for/f"tokens=2,1delims=,"%%iin(tmp2.txt)do(
setSOURCE_DRV=%%j
for/f"delims="%%lin('dir/b"!WINDRV!\!SOURCE_DRV!*"')do(
setCOPYDIR=%WINDRV%\%SOURCE_DRV%\%%l
::显示进度条
set/p=^><nul
xcopy/herky/Q!COPYDIR!%~dp0%OS_TP%\%%i\%%l\>nul
)
)
ifexisttmp0.txtdel/Qtmp0.txt
ifexisttmp1.txtdel/Qtmp1.txt
ifexisttmp2.txtdel/Qtmp2.txt
timeout-t5
exit