|
BCD引导重建工具.bat
@echo off &color 0a &setlocal enabledelayedexpansion
title BCD引导重建工具
echo.
echo BCD引导重建工具
echo.
echo =========================================================================
set "b_当前系统所有盘符="
call :获取当前系统可识别的Windows系统盘列表 "b_当前系统所有盘符"
if "" EQU "!b_当前系统所有盘符!" (
echo 没有找到任何的Windows系统盘符!任意键结束......
pause>nul
goto :eof
)
echo 输入您要修复或重建有关BCD所有引导文件的 Windows系统盘符(不带冒号)
echo 输入0 结束脚本
set "Esi_pan="
set "Edi_pan="
set /p Esi_pan=.请输入(!b_当前系统所有盘符! ):
if "0" EQU "!Esi_pan!" goto :eof
for %%a in (!b_当前系统所有盘符!) do if /i "%%a" EQU "!Esi_pan!" set "Esi_pan=%%a" & goto :确定盘符
echo 您输入的系统盘符错误!任意键结束......
pause>nul
goto :eof
:确定盘符
set "m_磁盘模式="
set "m_磁盘号="
echo.
echo 您需要修复引导的系统盘符 !Esi_pan!
echo.
call :DiskPart获取一个盘符的磁盘号和磁盘模式 "!Esi_pan!" "m_磁盘号" "m_磁盘模式"
if "" NEQ "!m_磁盘号!" if " " NEQ "!m_磁盘号!" goto :确定磁盘模式
echo 获取的磁盘号错误,没有办法重建BCD引导,任意键结束......
pause>nul
goto :eof
:确定磁盘模式
if /i "mbr" NEQ "!m_磁盘模式!" if /i "gpt" NEQ "!m_磁盘模式!" (
echo 只有MBR或GPT模式的磁盘才可以重建BCD引导,任意键结束......
pause>nul
goto :eof
)
set "m_ESP分区盘符列表="
set "m_磁盘所有盘符列表="
echo 正在获取磁盘信息......
echo.
call :DiskPart获取一个磁盘号上的ESP分区盘符和所有盘符列表 "!m_磁盘号!" "m_ESP分区盘符列表" "m_磁盘所有盘符列表"
echo 您选择的系统在磁盘号 !m_磁盘号! 上 该磁盘挂载的所有盘符:!m_磁盘所有盘符列表!
:选择修复BCD引导
echo.
echo =========================================================================
echo 您需要修复引导的系统盘符 !Esi_pan!
echo.
if /i "" NEQ "!m_ESP分区盘符列表!" (
echo 盘符!Esi_pan! 位于磁盘号 !m_磁盘号! 上 磁盘模式为: !m_磁盘模式! 其中ESP分区盘符有:!m_ESP分区盘符列表!
)
if /i "" EQU "!m_ESP分区盘符列表!" (
echo 盘符!Esi_pan! 位于磁盘号 !m_磁盘号! 上 磁盘模式为: !m_磁盘模式!
)
echo.
echo 请选择重建引导方式:
echo =========================================================================
echo.
if /i "mbr" EQU "!m_磁盘模式!" echo 1.重建MBR模式的磁盘BCD引导^(推荐^) 2.重建GPT模式的磁盘BCD引导 0.退出
if /i "gpt" EQU "!m_磁盘模式!" echo 1.重建MBR模式的磁盘BCD引导 2.重建GPT模式的磁盘BCD引导^(推荐^) 0.退出
echo.
echo =========================================================================
set /p 选择重建引导方式=.请输入选择重建引导方式:
if "1" NEQ "!选择重建引导方式!" if "2" NEQ "!选择重建引导方式!" if "0" NEQ "!选择重建引导方式!" (
echo 您的输入有误,请重新选择......
goto :选择修复BCD引导
)
if "0" EQU "!选择重建引导方式!" goto :eof
if "1" EQU "!选择重建引导方式!" call :重建MBR模式的磁盘BCD引导
if "2" EQU "!选择重建引导方式!" (
if /i "gpt" EQU "!m_磁盘模式!" call :查找显示ESP分区
if /i "mbr" EQU "!m_磁盘模式!" (
set "Edi_pan="
echo 请输入您需要创建 UEFI 启动BCD 的盘符^(!m_磁盘所有盘符列表! ^)
set /p "Edi_pan=.输入^(!m_磁盘所有盘符列表! ^),回车默认!Esi_pan!盘:"
set "确认目的盘符="
for %%a in (!m_磁盘所有盘符列表!) do if /i "%%a" EQU "!Edi_pan!" set "确认目的盘符=!Edi_pan!"
set "Edi_pan=!确认目的盘符!"
)
call :重建GPT模式的磁盘BCD引导
echo.
)
goto :选择修复BCD引导
:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
:查找显示ESP分区
set "Edi_pan="
if "" EQU "!m_ESP分区盘符列表!" (
echo 在磁盘号!m_磁盘号!里没有找到任何 ESP分区,任意键继续......
pause>nul
goto :eof
)
echo.
echo =========================================================================
echo 输入您要重建UEFI启动的esp引导分区的盘符(不带冒号)
set /p Edi_pan=.请输入(!m_ESP分区盘符列表! ):
for %%a in (!m_ESP分区盘符列表!) do if /i "%%a" EQU "!Edi_pan!" set "Edi_pan=%%a" & goto :eof
set "Edi_pan="
echo 您输入的ESP分区盘符错误!任意键继续......
pause>nul
goto :eof
:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
:重建GPT模式的磁盘BCD引导
echo.
if "" EQU "!Edi_pan!" (
set "Edi_pan=!Esi_pan!"
echo 您要重建UEFI启动的esp引导分区的盘符被重置默认为!Esi_pan!盘
)
if not exist !Edi_pan!:\ set "Edi_pan=!Esi_pan!"
echo 开始重建盘符 !Esi_pan! 的 !m_磁盘模式!模式的磁盘UEFI BCD引导到盘符 !Edi_pan! ......
echo =========================================================================
bcdboot %Esi_pan%:\Windows /s %Edi_pan%: /f uefi /l zh-cn
if not exist %Edi_pan%:\EFI\Microsoft\Boot\boot.sdi (
copy /Y /B /V %Esi_pan%:\Windows\Boot\DVD\EFI\boot.sdi %Edi_pan%:\EFI\Microsoft\Boot\boot.sdi >nul
)
if not exist %Edi_pan%:\EFI\Microsoft\Boot\boot.sdi (
copy /Y /B /V %Esi_pan%:\Windows\Boot\DVD\PCAT\boot.sdi %Edi_pan%:\EFI\Microsoft\Boot\boot.sdi >nul
)
if not exist %Edi_pan%:\EFI\Microsoft\Boot\boot.sdi (
copy /Y /B /V %Esi_pan%:\Windows\System32\boot.sdi %Edi_pan%:\EFI\Microsoft\Boot\boot.sdi >nul
)
if not exist %Edi_pan%:\EFI\Microsoft\Boot\boot.sdi (
copy /Y /B /V %Esi_pan%:\Windows\SysWOW64\boot.sdi %Edi_pan%:\EFI\Microsoft\Boot\boot.sdi >nul
)
if exist "%Edi_pan%:\EFI\Microsoft\Boot\zh-CN\bootmgfw.efi.mui" (
mkdir "%Edi_pan%:\EFI\Boot\zh-CN"
if exist "%Edi_pan%:\EFI\Boot\bootx64.efi" (
copy /Y /B /V "%Edi_pan%:\EFI\Microsoft\Boot\zh-CN\bootmgfw.efi.mui" "%Edi_pan%:\EFI\Boot\zh-CN\bootx64.efi.mui"
attrib -R -S -H "%Edi_pan%:\EFI\Boot\bootx64.efi"
del /f/q "%Edi_pan%:\EFI\Boot\bootx64.efi"
copy /Y /B /V "%Edi_pan%:\EFI\Microsoft\Boot\bootmgfw.efi" "%Edi_pan%:\EFI\Boot\bootx64.efi"
)
if exist "%Edi_pan%:\EFI\Boot\bootx32.efi" (
copy /Y /B /V "%Edi_pan%:\EFI\Microsoft\Boot\zh-CN\bootmgfw.efi.mui" "%Edi_pan%:\EFI\Boot\zh-CN\bootx32.efi.mui"
attrib -R -S -H "%Edi_pan%:\EFI\Boot\bootx32.efi"
del /f/q "%Edi_pan%:\EFI\Boot\bootx32.efi"
copy /Y /B /V "%Edi_pan%:\EFI\Microsoft\Boot\zh-CN\bootmgfw.efi" "%Edi_pan%:\EFI\Boot\zh-CN\bootx32.efi"
)
)>nul 2>nul
echo.
echo 重建盘符 !Esi_pan! 的UEFI BCD引导到盘符 !Edi_pan! 完毕! ......
goto :eof
:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
:重建MBR模式的磁盘BCD引导
echo.
echo 开始重建盘符 !Esi_pan! 的 !m_磁盘模式!模式的磁盘BIOS BCD引导......
echo =========================================================================
bcdboot %Esi_pan%:\Windows /s %Esi_pan%: /f BIOS /l zh-cn
if exist %Esi_pan%:\boot (
if not exist %Esi_pan%:\Boot\boot.sdi (
copy /Y /B /V %Esi_pan%:\Windows\Boot\DVD\EFI\boot.sdi %Esi_pan%:\Boot\boot.sdi >nul
)
if not exist %Esi_pan%:\Boot\boot.sdi (
copy /Y /B /V %Esi_pan%:\Windows\Boot\DVD\PCAT\boot.sdi %Esi_pan%:\Boot\boot.sdi >nul
)
if not exist %Esi_pan%:\Boot\boot.sdi (
copy /Y /B /V %Esi_pan%:\Windows\System32\boot.sdi %Esi_pan%:\Boot\boot.sdi >nul
)
if not exist %Esi_pan%:\Boot\boot.sdi (
copy /Y /B /V %Esi_pan%:\Windows\SysWOW64\boot.sdi %Esi_pan%:\Boot\boot.sdi >nul
)
xcopy "%Esi_pan%:\Boot\zh-CN\*" "%Esi_pan%:\zh-CN\*" /C/H/R/Y >nul
)
echo.
echo 重建盘符 !Esi_pan! 的 !m_磁盘模式!模式的磁盘BIOS BCD引导完毕!......
goto :eof
:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
:获取当前系统可识别的Windows系统盘列表
set "b_当前系统可识别的Windows系统盘列表="
for /f "tokens=1,* delims= " %%a in ('fsutil fsinfo drives') do for %%c in ( %%b ) do (
set "获取当前系统可识别的Windows系统盘列表_可用驱动器="
for /f "tokens=3" %%d in ('dir /-c %%cWindows\ 2^>nul') do if "" NEQ "%%d" set "获取当前系统可识别的Windows系统盘列表_可用驱动器=%%d"
if "" NEQ "!获取当前系统可识别的Windows系统盘列表_可用驱动器!" for /f "tokens=1 delims=:" %%d in ("%%c") do set "b_当前系统可识别的Windows系统盘列表=!b_当前系统可识别的Windows系统盘列表! %%d"
)
if "" NEQ "%~1" set "%~1=!b_当前系统可识别的Windows系统盘列表!"
if "" EQU "%~1" echo !b_当前系统可识别的Windows系统盘列表!
goto :eof
:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
:DiskPart获取一个盘符的磁盘号和磁盘模式
rem :DiskPart获取一个盘符的磁盘号和磁盘模式 "In"
rem :参数列表 盘符
set "DiskPart获取一个盘符的磁盘号和磁盘模式_磁盘号="
set "DiskPart获取一个盘符的磁盘号和磁盘模式_磁盘模式=MBR"
set "DiskPart获取一个盘符的磁盘号和磁盘模式_命令文件=%Random%_%Random%"
echo Sel Vol %~1 >!DiskPart获取一个盘符的磁盘号和磁盘模式_命令文件!
echo Det Vol >>!DiskPart获取一个盘符的磁盘号和磁盘模式_命令文件!
call :DiskPart文件命令_只回调列表行 "DiskPart获取一个盘符的磁盘号和磁盘模式_命令文件" "DiskPart获取一个盘符的磁盘号和磁盘模式_001" "DiskPart获取一个盘符的磁盘号和磁盘模式_临时变量"
if "" NEQ "%~2" set "%~2=!DiskPart获取一个盘符的磁盘号和磁盘模式_磁盘号!"
if "" EQU "%~2" if "" NEQ "!DiskPart获取一个盘符的磁盘号和磁盘模式_磁盘号!" echo !DiskPart获取一个盘符的磁盘号和磁盘模式_磁盘号!
if "" NEQ "%~3" set "%~3=!DiskPart获取一个盘符的磁盘号和磁盘模式_磁盘模式!"
if "" EQU "%~3" if "" NEQ "!DiskPart获取一个盘符的磁盘号和磁盘模式_磁盘模式!" echo !DiskPart获取一个盘符的磁盘号和磁盘模式_磁盘模式!
goto :eof
:::::::::::::::::::::::::::::::::::::::::::::::::::
:DiskPart获取一个盘符的磁盘号和磁盘模式_001
if "" EQU "!DiskPart获取一个盘符的磁盘号和磁盘模式_磁盘号!" for /f "tokens=3 delims= " %%a in ("!%~1!") do set "DiskPart获取一个盘符的磁盘号和磁盘模式_磁盘号=%%a"
if "*" EQU "!%~1:~-1!" set "DiskPart获取一个盘符的磁盘号和磁盘模式_磁盘模式=GPT"
goto :eof
:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
:DiskPart获取一个磁盘号上的ESP分区盘符和所有盘符列表
:DiskPart获取一个磁盘号上的ESP分区盘符列表
rem :DiskPart获取一个磁盘号上的ESP分区盘符列表 "In" ["Out_ptr"] ["Out_ptr"]
rem :参数列表 磁盘号 输出ESP分区盘符列表 输出所有盘符列表
set "DiskPart获取一个磁盘号上的ESP分区盘符列表_分区列表="
set "DiskPart获取一个磁盘号上的ESP分区盘符列表_ESP分区列表="
set "DiskPart获取一个磁盘号上的ESP分区盘符列表_ESP盘符列表="
set "DiskPart获取一个磁盘号上的ESP分区盘符列表_所有盘符列表="
set "DiskPart获取一个磁盘号上的ESP分区盘符列表_命令文件=%Random%_%Random%"
echo Sel Disk %~1 >!DiskPart获取一个磁盘号上的ESP分区盘符列表_命令文件!
echo List Part >>!DiskPart获取一个磁盘号上的ESP分区盘符列表_命令文件!
call :DiskPart文件命令_只回调列表行 "DiskPart获取一个磁盘号上的ESP分区盘符列表_命令文件" "DiskPart获取一个磁盘号上的ESP分区盘符列表_获取分区号列表" "DiskPart获取一个磁盘号上的ESP分区盘符列表_临时变量"
for %%a in (!DiskPart获取一个磁盘号上的ESP分区盘符列表_分区列表!) do (
set "DiskPart获取一个磁盘号上的ESP分区盘符列表_分区类型="
set "DiskPart获取一个磁盘号上的ESP分区盘符列表_分区盘符="
echo Sel Disk %~1 >!DiskPart获取一个磁盘号上的ESP分区盘符列表_命令文件!
echo Sel Part %%a >>!DiskPart获取一个磁盘号上的ESP分区盘符列表_命令文件!
echo Det Part >>!DiskPart获取一个磁盘号上的ESP分区盘符列表_命令文件!
call :DiskPart文件命令 "DiskPart获取一个磁盘号上的ESP分区盘符列表_命令文件" "DiskPart获取一个磁盘号上的ESP分区盘符列表_获取分区类型和盘符" "DiskPart获取一个磁盘号上的ESP分区盘符列表_临时变量"
call :字符串去掉前面和后面空格 "DiskPart获取一个磁盘号上的ESP分区盘符列表_分区类型"
if /i "C12A7328-F81F-11D2-BA4B-00A0C93EC93B" EQU "!DiskPart获取一个磁盘号上的ESP分区盘符列表_分区类型!" (
set "DiskPart获取一个磁盘号上的ESP分区盘符列表_ESP分区列表=!DiskPart获取一个磁盘号上的ESP分区盘符列表_ESP分区列表! %%a"
if "" EQU "!DiskPart获取一个磁盘号上的ESP分区盘符列表_分区盘符!" ( call :挂载一个分区号 "%~1" "%%a" )>nul 2>nul
)
if /i "C12A7328-F81F-11D2-BA4B-00A0C93EC93B" NEQ "!DiskPart获取一个磁盘号上的ESP分区盘符列表_分区类型!" (
if "" NEQ "!DiskPart获取一个磁盘号上的ESP分区盘符列表_分区盘符!" (
set "DiskPart获取一个磁盘号上的ESP分区盘符列表_所有盘符列表=!DiskPart获取一个磁盘号上的ESP分区盘符列表_所有盘符列表! !DiskPart获取一个磁盘号上的ESP分区盘符列表_分区盘符!"
)
)
)
for %%a in (!DiskPart获取一个磁盘号上的ESP分区盘符列表_ESP分区列表!) do (
set "DiskPart获取一个磁盘号上的ESP分区盘符列表_分区类型="
set "DiskPart获取一个磁盘号上的ESP分区盘符列表_分区盘符="
echo Sel Disk %~1 >!DiskPart获取一个磁盘号上的ESP分区盘符列表_命令文件!
echo Sel Part %%a >>!DiskPart获取一个磁盘号上的ESP分区盘符列表_命令文件!
echo Det Part >>!DiskPart获取一个磁盘号上的ESP分区盘符列表_命令文件!
call :DiskPart文件命令 "DiskPart获取一个磁盘号上的ESP分区盘符列表_命令文件" "DiskPart获取一个磁盘号上的ESP分区盘符列表_获取分区类型和盘符" "DiskPart获取一个磁盘号上的ESP分区盘符列表_临时变量"
if "" NEQ "!DiskPart获取一个磁盘号上的ESP分区盘符列表_分区盘符!" (
set "DiskPart获取一个磁盘号上的ESP分区盘符列表_ESP盘符列表=!DiskPart获取一个磁盘号上的ESP分区盘符列表_ESP盘符列表! !DiskPart获取一个磁盘号上的ESP分区盘符列表_分区盘符!"
)
)
if "" NEQ "!DiskPart获取一个磁盘号上的ESP分区盘符列表_ESP盘符列表!" (
set "DiskPart获取一个磁盘号上的ESP分区盘符列表_所有盘符列表=!DiskPart获取一个磁盘号上的ESP分区盘符列表_ESP盘符列表!!DiskPart获取一个磁盘号上的ESP分区盘符列表_所有盘符列表!"
)
if "" NEQ "%~2" set "%~2=!DiskPart获取一个磁盘号上的ESP分区盘符列表_ESP盘符列表!"
if "" EQU "%~2" if "" NEQ "!DiskPart获取一个磁盘号上的ESP分区盘符列表_ESP盘符列表!" echo !DiskPart获取一个磁盘号上的ESP分区盘符列表_ESP盘符列表!
if "" NEQ "%~3" set "%~3=!DiskPart获取一个磁盘号上的ESP分区盘符列表_所有盘符列表!"
if "" EQU "%~3" if "" NEQ "!DiskPart获取一个磁盘号上的ESP分区盘符列表_所有盘符列表!" echo !DiskPart获取一个磁盘号上的ESP分区盘符列表_所有盘符列表!
goto :eof
:::::::::::::::::::::::::::::::::::::::::::::::::::
:DiskPart获取一个磁盘号上的ESP分区盘符列表_获取分区号列表
for /f "tokens=2 delims= " %%a in ("!%~1!") do if "" NEQ "%%a" (
set "DiskPart获取一个磁盘号上的ESP分区盘符列表_分区列表=!DiskPart获取一个磁盘号上的ESP分区盘符列表_分区列表! %%a"
)
goto :eof
:::::::::::::::::::::::::::::::::::::::::::::::::::
:DiskPart获取一个磁盘号上的ESP分区盘符列表_获取分区类型和盘符
if "-" EQU "!DiskPart获取一个磁盘号上的ESP分区盘符列表_分区类型!" for /f "tokens=2 delims=:" %%a in ("!%~1!") do if "" NEQ "%%a" set "DiskPart获取一个磁盘号上的ESP分区盘符列表_分区类型=%%a"
if "" EQU "!DiskPart获取一个磁盘号上的ESP分区盘符列表_分区类型!" for /f "tokens=2 delims=:" %%a in ("!%~1!") do set "DiskPart获取一个磁盘号上的ESP分区盘符列表_分区类型=-"
if "-" EQU "!DiskPart获取一个磁盘号上的ESP分区盘符列表_分区盘符!" (
set "DiskPart获取一个磁盘号上的ESP分区盘符列表_分区盘符=!%~1:~14,4!"
set "DiskPart获取一个磁盘号上的ESP分区盘符列表_分区盘符=!DiskPart获取一个磁盘号上的ESP分区盘符列表_分区盘符: =!"
)
if "---" EQU "!%~1:~2,3!" set "DiskPart获取一个磁盘号上的ESP分区盘符列表_分区盘符=-"
goto :eof
:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
:挂载一个分区号
if "" NEQ "%~1" if "" NEQ "%~2" (
(
echo select disk %~1
echo select part %~2
echo assign
)|diskpart
)
goto :eof
:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
:DiskPart卸载盘符
rem :DiskPart卸载盘符 "In"
(
echo Sel Vol %~1
echo ReMove
) | DiskPart
goto :eof
:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
:DiskPart文件命令
rem :DiskPart文件命令 "In_Ptr" "In_Code" "In_ptr"
rem :参数列表 文件变量名 回调标签 回调参数 "In_ptr" 字符串行变量名
if "" EQU "%~1" goto :eof
if not exist "!%~1!" goto :eof
set "DiskPart文件命令_回调标签=%~2"
if "" NEQ "%~2" if ":" NEQ "!DiskPart文件命令_回调标签:~0,1!" set "DiskPart文件命令_回调标签=:%~2"
for /f "delims=" %%a in ('DiskPart.exe /s "!%~1!"') do (
if "" NEQ "%%a" if "" NEQ "%~2" (
if "" EQU "%~3" (
set "DiskPart文件命令_临时行=%%a"
call !DiskPart文件命令_回调标签! "DiskPart文件命令_临时行"
)
if "" NEQ "%~3" (
set "%~3=%%a"
call !DiskPart文件命令_回调标签! "%~3"
)
)
if "" NEQ "%%a" if "" EQU "%~2" echo %%a
if exist "!%~1!" ( del /f /q !%~1! ) >nul 2>nul
)
if exist "!%~1!" ( del /f /q !%~1! ) >nul 2>nul
goto :eof
:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
:DiskPart文件命令_只回调列表行
rem :DiskPart文件命令_只回调列表行 "In_Ptr" "In_Code" "In_ptr"
rem :参数列表 文件变量名 回调标签 回调参数 "In_ptr" 字符串行变量名
if "" EQU "%~1" goto :eof
if not exist "!%~1!" goto :eof
set "DiskPart文件命令_只回调列表行_回调标签=%~2"
if "" NEQ "%~2" if ":" NEQ "!DiskPart文件命令_只回调列表行_回调标签:~0,1!" set "DiskPart文件命令_只回调列表行_回调标签=:%~2"
set /a DiskPart文件命令_只回调列表行_解释行=0
for /f "delims=" %%a in ('DiskPart.exe /s "!%~1!"') do (
set "DiskPart文件命令_只回调列表行_临时行=%%a"
if 1 EQU !DiskPart文件命令_只回调列表行_解释行! (
if "" NEQ "%%a" if "" NEQ "%~2" (
if "" NEQ "%~3" (
set "%~3=%%a"
call !DiskPart文件命令_只回调列表行_回调标签! "%~3"
)
if "" EQU "%~3" call !DiskPart文件命令_只回调列表行_回调标签! "DiskPart文件命令_只回调列表行_临时行"
)
if "" NEQ "%%a" if "" EQU "%~2" echo %%a
)
if "---" EQU "!DiskPart文件命令_只回调列表行_临时行:~2,3!" set /a DiskPart文件命令_只回调列表行_解释行=!DiskPart文件命令_只回调列表行_解释行! + 1
if exist "!%~1!" ( del /f /q !%~1! ) >nul 2>nul
)
if exist "!%~1!" ( del /f /q !%~1! ) >nul 2>nul
goto :eof
:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
:字符串去掉前面空格
:去除字符串前面空格
rem :字符串去掉前面空格 "InOut_ptr"
if "" NEQ "%~1" if "" NEQ "!%~1!" if " " EQU "!%~1:~0,1!" set "%~1=!%~1:~1!" & goto %~0
goto :eof
:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
:字符串去掉后面空格
:去除字符串后面空格
rem :字符串去掉后面空格 "InOut_ptr"
if "" NEQ "%~1" if "" NEQ "!%~1!" if " " EQU "!%~1:~-1!" set "%~1=!%~1:~0,-1!" & goto %~0
goto :eof
:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
:字符串去掉前面和后面空格
:去除字符串前面和后面空格
rem :字符串去掉前面和后面空格 "InOut_ptr"
if "" NEQ "%~1" if "" NEQ "!%~1!" if " " EQU "!%~1:~0,1!" set "%~1=!%~1:~1!" & goto %~0
if "" NEQ "%~1" if "" NEQ "!%~1!" if " " EQU "!%~1:~-1!" set "%~1=!%~1:~0,-1!" & goto %~0
goto :eof
:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
通常我是 BCD重建后,efi 目录如果在系统分区就从系统盘拷贝到 ESP分区 , 然后需要对 BCD文件进行少量数据修改。 |
|