batch-filecmdbcdedit

How can I export BCD GUID identifier and description to text file?


I'm using a dual bool Windows machine with different versions of Windows on it (8.1 and 10) and I need a way of noting each installs unique GUID identifier.

Currently I can only export the entire bcdedit which is not what I'm after, how can I export the GUID identifiers and the descriptions ONLY into a txt file?

enter image description here


Solution

  • As @Squashman answered in comments the simplest way to get your target(s) is

    c:\Windows\System32\bcdedit.exe /enum |findstr "den des"
    identifier              {bootmgr}
    description             Windows Boot Manager
    identifier              {current}
    description             Windows 10
    identifier              {cace6f08-28f0-11eb-b3c4-4c72b9b04518}
    description             Windows 10
    

    You asked how to remove top two entries, so use more for less :-)

    c:\Windows\System32\bcdedit.exe /enum |findstr "den des" |more +2
    identifier              {current}
    description             Windows 10
    identifier              {cace6f08-28f0-11eb-b3c4-4c72b9b04518}
    description             Windows 10
    

    and if your next question is 2+2 use 4

    c:\Windows\System32\bcdedit.exe /enum |findstr "den des" |more +4 >c:\output.txt

    the output is sent to a file which because you are running in an unknown but likely protected zone I simply sent to the c:\ root directory, change to the temporary folder or other desired location. You can check the output with type.

    C:\Windows\system32>type c:\output.txt
    identifier              {cace6f08-28f0-11eb-b3c4-4c72b9b04518}
    description             Windows 10
    

    and

    For /F "Tokens=2*" %G In ('%SystemRoot%\System32\findstr.exe "e" c:\output.txt') Do @echo %~G %~H >c:\out2.txt

    will then return using type

    C:\Windows\system32>type c:\out2.txt
    {cace6f08-28f0-11eb-b3c4-4c72b9b04518}
    Windows 10
    

    Remember for %%var if you are adding together as a batch file:-

    RunMe.cmd (MUST BE run as administrator, otherwise you will see that bcedit access denied will result in "The system cannot find the file specified.")

    @echo off
    c:\Windows\System32\bcdedit.exe /enum |findstr "den des" |more +4>"%temp%\tempout.txt"
    if exist "%temp%\tempout2.txt" del "%temp%\tempout2.txt"
    For /F "Tokens=2*" %%G In ('%SystemRoot%\System32\findstr.exe "e" "%temp%\tempout.txt"') Do @echo %%~G %%~H >>"%temp%\tempout2.txt"
    type "%temp%\tempout2.txt"
    
    c:\Windows\System32>RunMe.cmd
    {cace6f08-28f0-11eb-b3c4-4c72b9b04518}
    Windows 10
    

    Note the above result depends on 6 simple entries from my tests and more +4 removes the first 4 it is not a robust solution to deal with varying number of lines output from bcedit.exe. so YMMV