還原模式選擇→還有點問題
是否隱藏資料夾、
是否隱藏Ventoy分割區→完成
是否清除資料碟
@echo off
set dir=%~dp0
set normal_file=%dir%<正常節點檔名>.vhdx
set recovery_file=%dir%<還原節點檔名>.vhdx
set parent_file=%dir%<父節點檔名>.vhdx
del %normal_file% %recovery_file%
if exist %normal_file% exit
if not exist %recovery_file% exit
echo create vdisk file=%dir%%normal_file% parent=%dir%%parent_file% > %temp%\cmd.txt
diskpart /s %temp%\cmd.txt
shutdown /r /f /t <秒數>
REM 正常節點與還原用節點由相同父節點差分而來
REM 於父節點以工作排程或服務執行
REM 選單中還原用節點最好在正常節點之後或預設選擇正常節點
REM 磁碟代號需固定,否則路徑變動則無法正常執行
REM 還原後重開機
@echo off
REM 批次檔所在資料夾
set dir=%~dp0
REM 正常節點路徑
set normal_file=%dir%<正常節點檔名>.vhdx
REM 還原節點路徑
set recovery_file=%dir%<還原節點檔名>.vhdx
REM 還原節點路徑
set parent_file=%dir%<父節點檔名>.vhdx
REM 刪除正常節點
del %normal_file%
REM 刪除還原節點
del %recovery_file%
REM 若正常節點仍存在則表示目前以正常節點開機,結束程式離開
if exist %normal_file% (
exit
)
REM 至此正常節點已不存在
REM 若還原節點不存在則表示目前以父節點開機,結束程式離開
if not exist %recovery_file% (
exit
)
REM 至此還原節點仍存在
REM 目前進入還原節點,執行正常節點之還原
REM 重新產生正常節點
echo create vdisk file=%dir%%normal_file% parent=%dir%%parent_file% > %dir%cmd.txt
diskpart /s %dir%cmd.txt
REM 刪除指令檔del %dir%cmd.txt >nul
REM 重開機
shutdown /r /f /t <秒數>
pause
CD /D "%~dp0"
del %TEMP%\1.txt
del %TEMP%\VDISK.txt
for %%a 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 %%a:\OS\win\ set IMAGESDRIVE=%%a
echo list VDISK >>%TEMP%\1.txt
diskpart /s %TEMP%\1.txt >>%TEMP%\VDISK.txt
findstr /p /i /c:"\Device\HarddiskVolume1\OS\win\SubOS1.vhdx" %TEMP%\VDISK.txt
if errorlevel 1 goto aa
if errorlevel 0 goto bb
:bb
del %IMAGESDRIVE%:\OS\win\SubOS2.vhdx
echo CREATE VDISK FILE=%IMAGESDRIVE%:\OS\win\SubOS2.vhdx PARENT=%IMAGESDRIVE%:\OS\win\w10x64_chd.vhdx >>%TEMP%\creatediff.txt
diskpart /s %TEMP%\creatediff.txt
del %TEMP%\creatediff.txt
del %IMAGESDRIVE%:\ventoy\ventoy.json
copy %IMAGESDRIVE%:\ventoy\ventoy.json2 %IMAGESDRIVE%:\ventoy\ventoy.json
del %TEMP%\VDISK.txt
pause
:aa
del %IMAGESDRIVE%:\OS\win\SubOS1.vhdx
echo CREATE VDISK FILE=%IMAGESDRIVE%:\OS\win\SubOS1.vhdx PARENT=%IMAGESDRIVE%:\OS\win\w10x64_chd.vhdx >>%TEMP%\creatediff.txt
diskpart /s %TEMP%\creatediff.txt
del %TEMP%\creatediff.txt
del %IMAGESDRIVE%:\ventoy\ventoy.json
copy %IMAGESDRIVE%:\ventoy\ventoy.json1 %IMAGESDRIVE%:\ventoy\ventoy.json
del %TEMP%\VDISK.txt
pause
功能:隱藏Ventoy磁區(預設為D,labe→Ventoy)
for %%a 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 %%a:\OS\win\ set IMAGESDRIVE=%%a
echo list volume >%TEMP%\1.txt
echo select volume 0 >>%TEMP%\1.txt
echo remove letter D >>%TEMP%\1.txt
diskpart /s %TEMP%\1.txt
功能:還原Ventoy磁區(預設為D,labe→Ventoy)
for %%a 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 %%a:\OS\win\ set IMAGESDRIVE=%%a
echo list volume >%TEMP%\1.txt
echo select volume 0 >>%TEMP%\1.txt
echo assign letter D >>%TEMP%\1.txt
diskpart /s %TEMP%\1.txt
合併
CD /D "%~dp0"
del %TEMP%\1.txt
del %TEMP%\VDISK.txt
for %%a 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 %%a:\OS\win\ set IMAGESDRIVE=%%a
echo list VDISK >>%TEMP%\1.txt
diskpart /s %TEMP%\1.txt >>%TEMP%\VDISK.txt
findstr /p /i /c:"\Device\HarddiskVolume1\OS\win\SubOS1.vhdx" %TEMP%\VDISK.txt
if errorlevel 1 goto aa
if errorlevel 0 goto bb
:bb
echo CREATE VDISK FILE=%IMAGESDRIVE%:\OS\win\SubOS2.vhdx PARENT=%IMAGESDRIVE%:\OS\win\w10x64_chd.vhdx >>%TEMP%\creatediff.txt
if exist %IMAGESDRIVE%:\OS\win\SubOS2.vhdx (del %IMAGESDRIVE%:\OS\win\SubOS2.vhdx &&diskpart /s %TEMP%\creatediff.txt &&pause &&del %TEMP%\creatediff.txt &&del %IMAGESDRIVE%:\ventoy\ventoy.json &© %IMAGESDRIVE%:\ventoy\ventoy.json2 %IMAGESDRIVE%:\ventoy\ventoy.json &&del %TEMP%\VDISK.txt &&del %TEMP%\1.txt) else (diskpart /s %TEMP%\creatediff.txt &&del %TEMP%\creatediff.txt &&del %IMAGESDRIVE%:\ventoy\ventoy.json &© %IMAGESDRIVE%:\ventoy\ventoy.json2 %IMAGESDRIVE%:\ventoy\ventoy.json &&del %TEMP%\VDISK.txt &&del %TEMP%\1.txt)
pause
:aa
echo CREATE VDISK FILE=%IMAGESDRIVE%:\OS\win\SubOS1.vhdx PARENT=%IMAGESDRIVE%:\OS\win\w10x64_chd.vhdx >>%TEMP%\creatediff.txt
if exist %IMAGESDRIVE%:\OS\win\SubOS1.vhdx (del %IMAGESDRIVE%:\OS\win\SubOS1.vhdx &&diskpart /s %TEMP%\creatediff.txt &&del %TEMP%\creatediff.txt &&del %IMAGESDRIVE%:\ventoy\ventoy.json &© %IMAGESDRIVE%:\ventoy\ventoy.json1 %IMAGESDRIVE%:\ventoy\ventoy.json &&del %TEMP%\VDISK.txt &&del %TEMP%\1.txt) else (diskpart /s %TEMP%\creatediff.txt &&del %TEMP%\creatediff.txt &&del %IMAGESDRIVE%:\ventoy\ventoy.json &© %IMAGESDRIVE%:\ventoy\ventoy.json1 %IMAGESDRIVE%:\ventoy\ventoy.json &&del %TEMP%\VDISK.txt &&del %TEMP%\1.txt)
pause
大神版
快速還原
@echo off
if "%1"=="hide" goto CmdBegin
start mshta vbscript:createobject("wscript.shell").run("""%~0"" hide",0)(window.close)&&exit
:CmdBegin
CD /D "%~dp0"
for %%a 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 %%a:\os\ set IMAGESDRIVE=%%a
echo list VDISK >>%TEMP%\1.txt
diskpart /s %TEMP%\1.txt >>%TEMP%\VDISK.txt
findstr /p /i /c:"\Device\HarddiskVolume1\os\SubOS1.vhdx" %TEMP%\VDISK.txt
if errorlevel 1 goto aa
if errorlevel 0 goto bb
:aa
del %IMAGESDRIVE%:\os\SubOS1.vhdx
echo CREATE VDISK FILE=%IMAGESDRIVE%:\os\SubOS1.vhdx PARENT=%IMAGESDRIVE%:\os\BaseOS.vhdx >>%TEMP%\creatediff.txt
diskpart /s %TEMP%\creatediff.txt
del %TEMP%\creatediff.txt
COPY /Y %IMAGESDRIVE%:\ventoy\ventoy.json.2 %IMAGESDRIVE%:\ventoy\ventoy.json
pause
goto end
:bb
del %IMAGESDRIVE%:\os\SubOS2.vhdx
echo CREATE VDISK FILE=%IMAGESDRIVE%:\os\SubOS2.vhdx PARENT=%IMAGESDRIVE%:\os\BaseOS.vhdx >>%TEMP%\creatediff.txt
diskpart /s %TEMP%\creatediff.txt
del %TEMP%\creatediff.txt
COPY /Y %IMAGESDRIVE%:\ventoy\ventoy.json.1 %IMAGESDRIVE%:\ventoy\ventoy.json
pause
goto end
:end
del %TEMP%\VDISK.txt
del %TEMP%\1.txt
exit@echo off
if "%1"=="hide" goto CmdBegin
start mshta vbscript:createobject("wscript.shell").run("""%~0"" hide",0)(window.close)&&exit
:CmdBegin
CD /D "%~dp0"
for %%a 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 %%a:\os\ set IMAGESDRIVE=%%a
echo list VDISK >>%TEMP%\1.txt
diskpart /s %TEMP%\1.txt >>%TEMP%\VDISK.txt
findstr /p /i /c:"\Device\HarddiskVolume1\os\SubOS1.vhdx" %TEMP%\VDISK.txt
if errorlevel 1 goto aa
if errorlevel 0 goto bb
:aa
del %IMAGESDRIVE%:\os\SubOS1.vhdx
echo CREATE VDISK FILE=%IMAGESDRIVE%:\os\SubOS1.vhdx PARENT=%IMAGESDRIVE%:\os\BaseOS.vhdx >>%TEMP%\creatediff.txt
diskpart /s %TEMP%\creatediff.txt
del %TEMP%\creatediff.txt
COPY /Y %IMAGESDRIVE%:\ventoy\ventoy.json.2 %IMAGESDRIVE%:\ventoy\ventoy.json
pause
goto end
:bb
del %IMAGESDRIVE%:\os\SubOS2.vhdx
echo CREATE VDISK FILE=%IMAGESDRIVE%:\os\SubOS2.vhdx PARENT=%IMAGESDRIVE%:\os\BaseOS.vhdx >>%TEMP%\creatediff.txt
diskpart /s %TEMP%\creatediff.txt
del %TEMP%\creatediff.txt
COPY /Y %IMAGESDRIVE%:\ventoy\ventoy.json.1 %IMAGESDRIVE%:\ventoy\ventoy.json
pause
goto end
:end
del %TEMP%\VDISK.txt
del %TEMP%\1.txt
exit
每次還原
@echo off
if "%1"=="hide" goto CmdBegin
start mshta vbscript:createobject("wscript.shell").run("""%~0"" hide",0)(window.close)&&exit
:CmdBegin
CD /D "%~dp0"
for %%a 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 %%a:\os\ set IMAGESDRIVE=%%a
echo list VDISK >>%TEMP%\1.txt
diskpart /s %TEMP%\1.txt >>%TEMP%\VDISK.txt
findstr /p /i /c:"\Device\HarddiskVolume1\os\SubOS1.vhdx" %TEMP%\VDISK.txt
if errorlevel 1 goto aa
if errorlevel 0 goto bb
:aa
del %IMAGESDRIVE%:\os\SubOS1.vhdx
echo CREATE VDISK FILE=%IMAGESDRIVE%:\os\SubOS1.vhdx PARENT=%IMAGESDRIVE%:\os\BaseOS.vhdx >>%TEMP%\creatediff.txt
diskpart /s %TEMP%\creatediff.txt
del %TEMP%\creatediff.txt
COPY /Y %IMAGESDRIVE%:\ventoy\ventoy.json.1 %IMAGESDRIVE%:\ventoy\ventoy.json
pause
goto end
:bb
del %IMAGESDRIVE%:\os\SubOS2.vhdx
echo CREATE VDISK FILE=%IMAGESDRIVE%:\os\SubOS2.vhdx PARENT=%IMAGESDRIVE%:\os\BaseOS.vhdx >>%TEMP%\creatediff.txt
diskpart /s %TEMP%\creatediff.txt
del %TEMP%\creatediff.txt
COPY /Y %IMAGESDRIVE%:\ventoy\ventoy.json.2 %IMAGESDRIVE%:\ventoy\ventoy.json
pause
goto end
:end
del %TEMP%\VDISK.txt
del %TEMP%\1.txt
exit