Witam!
Utworzyłem sobie skrypt „recovery.bat” o poniższej treści który ma przywrócić system Windows z pliku WIM na czystą partycję.
@echo off
diskpart /s recovery.txt
imagex /apply recovery.wim 1 j:
bcdboot j:\windows /s j: /f all
bootsect /nt60 j: /force
echo.
echo SYSTEM RECOVERY FINISHED!
echo.
echo PRESS ANY KEY TO REBOOT SYSTEM!
echo.
pause>nul
wpeutil reboot
Obraz instalacyjny WIM przywraca się bez problemu natomiast po ponownym uruchomieniu komputera system się nie uruchamia z przywróconego obrazu. Czy mógłby ktoś napisać co robię źle?
@januszek Tak użyłem „imagex.exe” do przywrócenia obrazu WIM. Ale już wszystko działa. Poniżej poprawna składnia plików.
Plik „recovery.bat”: @echo off
diskpart /s recovery.txt
imagex /apply recovery.wim 1 w:
bcdboot w:\windows
echo.
echo SYSTEM RECOVERY FINISHED!
echo.
echo PRESS ANY KEY TO REBOOT SYSTEM!
echo.
pause>nul
wpeutil reboot
Plik „recovery.txt”:
select disk 0
clean
create partition primary size=100
format quick fs=ntfs label=System
assign letter=S
active
create partition primary
shrink minimum=500
format quick fs=ntfs label=Windows
assign letter=W
exit
Jeszcze została ostatnia kwestia. Jak w środowisku WinPE uruchamianym z płyty zrobić tak żeby plik „recovery.bat” uruchamiał się automatycznie po załadowaniu środowiska WinPE?
Poniżej zmodyfikowana wersja skryptu „recovery.bat” wykorzystująca plik „recovery.wim”.
Plik „recovery.bat”: @echo off
echo.
echo Proces odzyskiwania pomoze przywrocic system operacyjny do oryginalnego stanu fabrycznego.
echo.
echo Jezeli masz dostep do dysku twardego wykonaj kopie zapasowa wszystkich swoich waznych plikow przed rozpoczeciem procesu odzyskiwania.
echo.
echo Kreator odzyskiwania dziala tylko w notebookach OEM. Nie bedzie on dzialal z zadnym innym systemem komputerowym.
echo.
echo Wszystkie aplikacje umieszczone na niniejszej plycie odzyskiwania podlegaja warunkom licencjonowania oprogramowania dostarczanego wraz z Twoim notebookiem OEM. Korzystanie z tej plyty oznacza ze wyrazasz zgode na warunki umow licencyjnych.
echo.
echo W czasie procesu odzyskiwania wszystkie pliki znajdujace sie na partycjach twardego dysku zostana utracone. OEM nie bedzie ponosic odpowiedzialnosci za utrate danych spowodowana uzyciem tej plyty odzyskiwania.
echo.
echo W czasie procesu odzyskiwania na twardym dysku zostana utworzone i sformatowane dwie partycje [OS] oraz [DATA].
echo.
echo W czasie procesu odzyskiwania nie wolno odlaczac zasilania oraz otwierac napedu DVD-ROM. Jesli w trakcie odzyskiwania zasilanie zostanie odlaczone lub plyta odzyskiwania zostanie wysunieta z napedu caly proces nalezy powtorzyc od poczatku.
echo.
echo Kliknij przycisk [ENTER] aby uruchomic proces odzyskiwania.
echo.
pause>nul
for %%r in (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 %%r:\recovery.bat set CDROM=%%r
diskpart /s %CDROM%:\recovery.txt
imagex /apply %CDROM%:\recovery.wim 1 t:
bcdboot t:\windows
echo.
echo Proces odzyskiwania zostal zakonczony pomyslnie.
echo.
echo Kliknij przycisk [ENTER] aby ponownie uruchomic system i dokonczyc konfiguracje.
echo.
pause>nul
wpeutil reboot
Poniżej zmodyfikowana wersja skryptu „recovery.bat” wykorzystująca plik „recovery.wim” podzielony na pliki „recovery.swm” i „recovery2.swm”.
Plik „recovery.bat”: @echo off
echo.
echo Proces odzyskiwania pomoze przywrocic system operacyjny do oryginalnego stanu fabrycznego.
echo.
echo Jezeli masz dostep do dysku twardego wykonaj kopie zapasowa wszystkich swoich waznych plikow przed rozpoczeciem procesu odzyskiwania.
echo.
echo Kreator odzyskiwania dziala tylko w notebookach OEM. Nie bedzie on dzialal z zadnym innym systemem komputerowym.
echo.
echo Wszystkie aplikacje umieszczone na niniejszej plycie odzyskiwania podlegaja warunkom licencjonowania oprogramowania dostarczanego wraz z Twoim notebookiem OEM. Korzystanie z tej plyty oznacza ze wyrazasz zgode na warunki umow licencyjnych.
echo.
echo W czasie procesu odzyskiwania wszystkie pliki znajdujace sie na partycjach twardego dysku zostana utracone. OEM nie bedzie ponosic odpowiedzialnosci za utrate danych spowodowana uzyciem tej plyty odzyskiwania.
echo.
echo W czasie procesu odzyskiwania na twardym dysku zostana utworzone i sformatowane dwie partycje [OS] oraz [DATA].
echo.
echo W czasie procesu odzyskiwania nie wolno odlaczac zasilania oraz otwierac napedu DVD-ROM. Jesli w trakcie odzyskiwania zasilanie zostanie odlaczone lub plyta odzyskiwania zostanie wysunieta z napedu caly proces nalezy powtorzyc od poczatku.
echo.
echo Kliknij przycisk [ENTER] aby uruchomic proces odzyskiwania.
echo.
pause>nul
for %%r in (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 %%r:\recovery.bat set CDROM=%%r
diskpart /s %CDROM%:\recovery.txt
imagex /apply %CDROM%:\recovery.swm /ref recovery*.swm 1 t:
bcdboot t:\windows
echo.
echo Proces odzyskiwania zostal zakonczony pomyslnie.
echo.
echo Kliknij przycisk [ENTER] aby ponownie uruchomic system i dokonczyc konfiguracje.
echo.
pause>nul
wpeutil reboot
A tutaj plik „recovery.txt” zawierający informacje o partycjach (wymagany do działania skryptu „recovery.bat”):
select disk 0
clean
create partition primary size=100
format quick fs=ntfs label=System
assign letter=S
active
create partition primary size=50000
format quick fs=ntfs label=OS
assign letter=T
create partition primary
format quick fs=ntfs label=DATA
assign letter=W
exit
Co jest źle w powyższych skryptach że program „imagex.exe” nie widzi pliku WIM lub plików SWM?
EDIT: Problem rozwiązany. Skrypt nie widzi pliku WIM zawierającego więcej niż jedną wersję systemu Windows. Należy z oryginalnego pliku WIM wyodrębnić plik WIM zawierający tylko jedną wersję systemu np. Windows 10 Pro za pomocą programu „gimagex.exe”. Jeżeli wynikowy plik WIM będzie przekraczał 4GB należy go podzielić na dwa pliki SWM.
EDIT2: Jeżeli chcemy żeby skrypt „recovery.bat” uruchamiał się automatycznie po uruchomieniu środowiska WinPE tworzymy plik „startnet.cmd” o poniższej treści i umieszczamy go w katalogu zamontowanego pliku „boot.wim” czyli np. „ZamontowanyWIM:\Windows\System32\startnet.cmd” a następnie zapisujemy zmiany w pliku „boot.wim”:
wpeinit @echo off
for %%r in (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 %%r:\recovery.bat set CDROM=%%r
call %CDROM%:\recovery.bat