Posted in: Windows 10, Windows 11, Windows 8 a 8.1, Windows server

Obnova Windows z Windows.old

Vrátit se k předešlé verzi systému po jeho upgrade je možné poměrně jednoduše v případě klientských Windows pomocí nastavení.

Alternativou k tomu grafickému postupu je pak příkaz:

DISM /Online /Initiate-OSUninstall /Quiet

Oba výše zmíněné postupy platí pro Windows 10 verze 2004 a novější i pro Windows 11, ale jak postupovat u Windows 8 a starších, nebo u serverových systémů?

Ruční obnova systému z Windows.old

Pro tento úkon je potřeba zařízení spustit z instalačního média systému Windows, nebo restartovat do WinRE prostředí. V případě instalačního média spustíme příkazovou řádku pomocí [Shift] + [F10], nebo pomocí volby opravit počítač, kde se nabídne prostředí WinRE. Text níže předpokládá, že i v tomto prostředí má systémový oddíl písmeno C, ověřit to můžeme nástrojem diskpart.

Začneme odstraněním adresářů nového systému (složku C:\users mažeme jen tehdy, když bylo upgradováno BEZ zachování uživatelských souborů). K mazání používáme následující sadu příkazů:

rmdir /s /q "c:\PerfLogs"
rmdir /s /q "c:\Program Files"
rmdir /s /q "c:\Program Files (x86)"
rmdir /s /q "c:\Windows"
rmdir /s /q "c:\ProgramData"
rmdir /s /q "c:\Users"

Nyní nastal čas na to, abychom přesunuli původní (v příkladu x64) systém na disk C.

move /y c:\Windows.old\Windows c:\
move /y "c:\Windows.old\Program Files" c:\
move /y "c:\Windows.old\Program Files (x86)" c:\
move /y c:\Windows.old\ProgramData c:\
move /y c:\Windows.old\Users c:\
move /y "c:\Windows.old\Documents and Settings" c:\
xcopy c:\Windows.old c: /s /e /h

V tuto chvíli máme sice na disku C vybalený zpět původní systém, ale nešlo by z něj nastartovat. Musíme ještě opravit Boot.

Oprava Boot pro UEFI

Pomocí následujících příkazů nalezneme oddíl UEFI a přidělíme mu písmeno:

diskpart
list vol

Nyní najdeme UEFI oddíl, jeho velikost je cca 100 MB a využívá formát FAT32. Jeho číslo budeme potřebovat dále.

sel vol <number of volume>
assign letter=U:
exit

Nyní již můžeme k vlastní konfiguraci Bootu pro UEFI.

cd /d U:\EFI\Microsoft\Boot\
bootrec /FixBoot
ren BCD BCD.old
bcdboot c:\Windows /s U: UEFI

Pokud nemáte systémový oddíl jako C, doplňte místo C do posledního příkazu písmeno vašeho systémového oddílu. Pokud příkaz „bootrec /FixBoot“ skončí chybou, chybu ignorujte a pokračujte v příkazech dále. Nyní můžeme restartovat systém.

Oprava Boot pro BIOS (MBR spouštění systému)

Oprava boot pro systémy, které využívají MBR (tedy BIOS) je jednoduší, stačí následující příkazy:

bootrec /fixmbr
bootrec /fixboot
bootrec /rebuildbcd

Máme hotovo, můžeme resetovat systém.

Oprava Boot pro Windows to Go

Pomocí následujících příkazů nalezneme oddíl UEFI a přidělíme mu písmeno:

diskpart
list vol

Nyní najdeme UEFI oddíl, jeho velikost je cca 100 MB a využívá formát FAT32. Jeho číslo budeme potřebovat dále.

sel vol <number of volume>
assign letter=U:
exit

Nyní již můžeme k vlastní konfiguraci Bootu pro UEFI.

cd /d U:\EFI\Microsoft\Boot\
bootrec /FixBoot
ren BCD BCD.old
bcdboot c:\Windows /s C: All

Pokud nemáte systémový oddíl jako C, doplňte místo C do posledního příkazu písmeno vašeho systémového oddílu. Pokud příkaz „bootrec /FixBoot“ skončí chybou, chybu ignorujte a pokračujte v příkazech dále. Nyní můžeme restartovat systém.

Dokončení

Může se stát, že systém se nespustí na přihlašovací obrazovku, ale do prostředí WinRE, v tom případě se i na serverových systémech objeví možnost Oprava spouštění systému (níže ilustrační obrázek z Windows 10).

Toto již většinou bez problémů projde a systém se automatizovaně doopraví a spustí. Po přihlášení se nejspíš zobrazí chyba, že koš systémové jednotky je poškozen a je potřeba jej vysypat, zde zadejte NE. Nyní doporučuji zkontrolovat NTFS a systémové soubory pomocí sady následujících příkazů:

sfc /scannow
dism /online /cleanup-image /scanhealth
dism /online /cleanup-image /restorehealth
echo y | chkdsk c: /f
shutdown /g /t 0 /f

Při restartu dojde ke kontrole systémové jednotky C, doporučuji nechat proběhnout! Po dokončení a přihlášení je možné hlášku poškození koše potvrdit ANO pokud se ještě zobrazí. Dle mé zkušenosti se při tomto postupu u serverových systémů ztratí veškerý obsah ze start menu, což je opravdu nepříjemné, ale dobrou zprávou je, že aplikace jsou v systému a fungují.

Posted in: Windows 10, Windows 11, Windows 8 a 8.1, Windows server

Sloučení více textových souborů do jednoho

Možností, jak i na Windows sloučit velké textové soubory je mnoho, a to i bez využití subsystému pro linux. V PowerSehllu je možné využít příkaz Get-content (alias gc) v kombinaci s out-file, např. takto:

gc soubor1.txt, soubor2.txt | out-file soubor3.txt

Výše popsané řešení v PowerShellu má však svá úskalí, jde o poměrně hodně paměťově náročnou možnost, protože se nejdříve celý obsah obou souborů načte do paměti, následně se uloží do nového souboru.

Výkonově méně náročnou možností je využít příkazovou řádku a její nástroj type. U velkých souborů (řádově GB) je zpracování pomalé, ale i tak nenáročné z pohledu množství paměti potřebné pro provedení. Příklad využitý výše si nyní přepíšeme do podoby nástroje type:

type soubor1.txt soubor2.txt > soubor3.txt

Pro sloučení více souborů, které jsou v jednom adresáři (teoreticky libovolně mnoho) se dá zapsat:

type *.txt > %userprofile%\desktop\vystup.txt

V příkladu výše bude výstupní soubor uložen na ploše uživatele, pod kterým byla spuštěna příkazová řádka.

Posted in: Windows 10, Windows 11, Windows 8 a 8.1

Vypínání, aneb PowerManagement

Pokud potřebuji systém restartovat úplně, nebo to provést vzdáleně, nezbývá, nežli použít příkazovou řádku. Základem je příkaz shutdown, který je vyvolatelný z příkazové řádky, nebo z možnosti spustit (klávesa Start + R). Jeho všechny možné parametry nalezeme v níže uvedeném přehledu.

/?Zobrazí nápovědu. Stejný výsledek dostanete, i když nezadáte žádný parametr.
/iZobrazí grafické uživatelské rozhraní (GUI).
/lOdhlášení. Nelze použít s parametrem /m nebo /d.
/sVypne místní počítač.
/rZcela vypne a restartuje počítač.
/gZcela vypne a restartuje počítač. Po novém spuštění počítače restartujte všechny registrované aplikace.
/aPřeruší vypínání systému. Lze použít pouze v časovém limitu. V kombinaci s /fw vymaže všechna čekající spuštění do firmwaru.
/pVypne místní počítač bez časového limitu nebo upozornění. Lze použít pouze s přepínači /d a /f.
/hUvede místní počítač do režimu hibernace.
/hybridVypne počítač a připraví jej na rychlé spuštění. Musí být použito s parametrem /s.
/fwV kombinaci s možností vypnutí způsobí, aby příští spuštění přešlo do uživatelského rozhraní firmwaru.
/eDokumentuje důvod neočekávaného vypnutí počítače.
/oUmožňuje přejít do nabídky rozšířených možností spuštění a restartovat počítač. Musí být použito s parametrem /r.
/m \\počítačUrčuje cílový počítač.
/t xxxNastaví časový limit před vypnutím na xxx sekund. Platný rozsah je 0–315360000 (10 let), výchozí hodnota je 30. Je-li časový limit větší než 0, předpokládá se použití parametru /f.
/c „komentář“Komentář k důvodu restartování nebo vypnutí. Povoleno je maximálně 512 znaků.
/fVynutí ukončení spuštěných aplikací bez předchozího upozornění. Použití parametru /f se předpokládá, pokud je pro parametr /t zadána větší hodnota než 0.
/d [p|u:]xx:yyZadejte důvod restartování nebo vypnutí.
p označuje, že restartování nebo vypnutí je plánované.
u označuje, že důvod definuje uživatel.
Není-li zadán parametr p ani u, je restartování nebo vypnutí
neplánované.
xx je číslo závažného důvodu (kladné celé číslo menší než 256).
yy je číslo méně závažného důvodu (kladné celé číslo menší než 65 536).

Přehled je dobrá věc, ale co nějaké praktické příklady? Prosím, ukáži zdrojový kód dvou cmd skriptů, resp. dávek, které umožňují pracovat s napájením. Níže uvedené skripty je potřeba zkopírovat do textového souboru, kterému po uložení změníte koncovku z txt na cmd.
Hned ta první umožní nalánovat restart PC po uplynutí nějaké doby zadané v hodinách.
echo off
echo Plánovaný restart
echo ========================
set /p cas=Zadejte čas, za který se má provést akce v hodinách:
set /a „time=cas*3600“
shutdown /g /f /t %time%

REM konec skriptu

Druhý příklad je skript, který umožní komplexní práci s vypínáním a například směřovat další spuštění do nouzového režimu.


echo off
echo Power Management
echo =========================================================
echo Mozne akce:
echo 1 = Restart
echo 2 = Vypnout
echo 3 = Hybernace
echo 4 = Moznot přechodu do BIOS
echo 5 = Rozsirene moznosti spousteni
echo 6 = Zobrazí grafické prostredi
echo 7 = Zruseni planovaneho vypnuti/restartu
set /p akce=Zadejte cislo akce:
if akce==1 goto reset
if akce==2 goto vypnout
if akce==3 goto Hyber
if akce==4 goto BIOS
if akce==5 goto nouze
if akce==6 goto GUI
if akce==7 goto Zdrus
set /p cas=Zadejte cas, za který se ma provest akce v hodinach:
set /a „time=cas*3600“
reset:
shutdown /g /f /t %time%
goto End

vypnout:
shutdown /s /f /t %time%
goto End

Hyber:
shutdown /h /f /t %time%
goto End

BIOS:
shutdown /fw /t %time%
Goto End

nouze:
shutdown /o /t %time%
Goto End

GUI:
shutdown /i /t %time%
Goto End

Zdrus:
shutdown /a

End:
echo Vse nastaveno
exit

Doufám, že uvedené informace jsou užitečné a skripty dobře pochopitelné.

Back to Top