5

ImageX と WIM を使用して HDD を再構築した後、BCD が破損することがあります。そのため、コマンド プロンプトで無人で実行されているスクリプトから BCD を再構築する必要があります。

以下のコードは、手動で入力するとジョブを実行します。自動化するには助けが必要です(以下のコード例をさらに参照してください):

bootrec.exe /fixmbr
bootsect.exe /nt60 all /force
attrib -h -s C:\boot\BCD
del C:\boot\BCD
bcdedit.exe /createstore c:\boot\bcd.temp
bcdedit.exe /store c:\boot\bcd.temp /create {bootmgr} /d "Windows Boot Manager"
bcdedit.exe /import c:\boot\bcd.temp
bcdedit.exe /set {bootmgr} device partition=C:
bcdedit.exe /timeout 10
attrib -h -s C:\boot\bcd.temp
del c:\boot\bcd.temp
bcdedit.exe /create /d "Microsoft Windows" /application osloader
bcdedit.exe /set {GUID} device partition=C:
bcdedit.exe /set {GUID} osdevice partition=C:
bcdedit.exe /set {GUID} path \Windows\system32\winload.exe
bcdedit.exe /set {GUID} systemroot \Windows
bcdedit.exe /displayorder {GUID}

上記のように、これを無人のコマンド プロンプトで実行する必要があります。最後の 6 番目のステートメント「bcdedit.exe /create /d "Microsoft Windows" /application osloader」からの出力は、新しく作成された GUID です。この ID は、次のコマンドで必要になります。

この新しい GUID を bcdedit から、次のコードで呼び出すことができる変数にロードするにはどうすればよいですか?

よろしくヘンリック・V・ニールセン

4

5 に答える 5

4

他の人が同じ問題に直面する必要がある場合は、次の行を追加して解決しました。

For /F "tokens=2 delims={}" %%i in ('bcdedit.exe') do (set _NEWGUID=%%i)

これは、ファイルに GUID が 1 つしかないため機能します。

于 2016-05-12T10:29:13.533 に答える
0

もっと簡単な方法があります。

新しいエントリを作成するとき、BCD はフォームaaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee (桁数8-4-4-4-12 )のすべての GUID を受け入れます。

これは、GUID を定義でき、For ループで GUID を検索する必要がないことを意味します。

それは私のために働いています。

于 2016-09-16T09:12:13.107 に答える
0

これは Henrik のコードに基づくソリューションです

これにより、BCD から作成された GUID がテキスト ファイルに取り込まれ、for ループがファイルから GUID を取得します。

bootrec.exe /fixmbr
bootsect.exe /nt60 all /force
attrib -h -s C:\boot\BCD
del C:\boot\BCD
bcdedit.exe /createstore c:\boot\bcd.temp
bcdedit.exe /store c:\boot\bcd.temp /create {bootmgr} /d "Windows Boot Manager"
bcdedit.exe /import c:\boot\bcd.temp
bcdedit.exe /set {bootmgr} device partition=C:
bcdedit.exe /timeout 10
attrib -h -s C:\boot\bcd.temp
del c:\boot\bcd.temp
bcdedit.exe /create /d "Microsoft Windows" /application osloader>GUID.txt
For /F "tokens=2 delims={}" %%i in (GUID.txt) do (set _NEWGUID=%%i)
bcdedit.exe /set %_NEWGUID% device partition=C:
bcdedit.exe /set %_NEWGUID% osdevice partition=C:
bcdedit.exe /set %_NEWGUID% path \Windows\system32\winload.exe
bcdedit.exe /set %_NEWGUID% systemroot \Windows
bcdedit.exe /displayorder %_NEWGUID%
于 2016-12-08T21:41:19.420 に答える