マルチブート環境にて次回のみ異なるOSから再起動する(bcdedit /bootsequence) [Win7/8]
bcdedit /bootsequenceコマンドで次回に起動するOSを一時的に変更する。再起動をかけるバッチファイルを作ってちょい手間省き。(Windows 7,8)
普段使っているOSとは違うOSを起動したいとき、ちょっと目をそらしている隙にブート選択画面を見逃して再起動をやり直すことが多々あります。ブート選択画面がいつ出るかとディスプレイを見つめていなければなりません。せいぜい数十秒待つだけなのですが、手間に感じることは確かです。
かといって「システムのプロパティ」を開いて「既定のオペレーティングシステム」の設定を変えるのは、やはり手間です。設定を変える手間とブート選択画面を待つ手間、どっちもどっちですねー。
そこでbcdeditコマンドの/bootsequenceスイッチです。
bcdedit /bootsequence ヘルプ
このコマンドは、ブート マネージャーが使用する 1 回限りのブート シーケンスを
設定します。
bcdedit /bootsequence <id> [...] [ /addfirst | /addlast | /remove ]
<id> [...] ブート シーケンスを構成する識別子の一覧を
指定します。1 つ以上の識別子を指定し、スペースで
区切る必要があります。識別子の詳細については、
"bcdedit /? ID" を実行してください。
/addfirst 指定されたエントリ識別子をブート シーケンスの最初に
追加します。このスイッチを指定した場合は、識別子を
1 つしか指定できません。識別子が既に一覧内にある場合は、
一覧の最初に移動されます。
/addlast 指定されたエントリ識別子をブート シーケンスの最後に
追加します。このスイッチを指定した場合は、識別子を
1 つしか指定できません。識別子が既に一覧内にある場合は、
一覧の最後に移動されます。
/remove 指定されたエントリ識別子をブート シーケンスから
削除します。このスイッチを指定した場合は識別子を
1 つしか指定できません。識別子が一覧にない場合は、
この操作は影響しません。最後のエントリが
削除されている場合、ブート シーケンスの値は
ブート マネージャー エントリから削除されます。
例:
次のコマンドは、ブート マネージャーの 1 回限りのブート シーケンスに
2 つの OS エントリと NTLDR ベースの OS ローダーを設定します:
bcdedit /bootsequence {802d5e32-0784-11da-bd33-000476eba25f}
{cbd971bf-b7b8-4885-951a-fa03044f5d71} {ntldr}
次のコマンドは、指定された OS エントリをブート マネージャーの 1 回限りの
ブート シーケンスの最後に追加します:
bcdedit /bootsequence {802d5e32-0784-11da-bd33-000476eba25f} /addlast
使用方法
あらかじめ、起動したいOSエントリのidentifier(識別子)を知る必要があります。
コマンドプロンプトを管理者権限で実行し、bcdedit
コマンドを実行します。
OSエントリの一覧が表示されるので、目的のエントリのidentifierの値をコピーまたはメモします。
それを使ってbcdedit /bootsequence identifier
というようにコマンドを実行します。これで次回ブート時のみ、そのOSエントリから起動します。目的のOSがWindows NT/2000/XP/2003の場合、identifierは{ntldr}となります。
再起動用バッチファイル
shutdownコマンドと組み合わせてバッチファイルを作れば、クリック2回で違うOSへ再起動をかけることができます。
バッチファイルは管理者権限で実行する必要があります。管理者権限でないとbcdeditコマンドが実行されずに次のコマンドに移ってしまいます。普通に実行してしまったときの対策のため、bcdeditコマンドの終了コードで操作が正常に行われたかどうか判別します。
次はWindows XPへ再起動をかけるバッチです。
bcdedit /bootsequence {ntldr}
if errorlevel 1 goto err
shutdown /r /t 0
exit
:err
pause
参考サイト
- Tip:Windows 7:Temporarily Change the OS Boot Sequence - TechNet Magazine
- http://technet.microsoft.com/en-us/magazine/ff700231.aspx
- bcdeditコマンドでブート・シーケンスを一時的に変更する - @IT
- http://www.atmarkit.co.jp/fwin2k/win2ktips/1324bcdbtsq/bcdbtsq.html