Erledigt UEFI Bootmenü Reparatur

VanFlusen

Themenstarter
Bekanntes Mitglied
Ich habe mir auf meinem Test-Rechner das UEFI Bootmenü abgeschossen und zur Reparatur folgende Befehle in der Eingabeaufforderung ausgeführt:

diskpart
list vol
sel vol 4 (4 = die Nummer der Systempartition/FAT32, 100 MB).
format FS= Fat32 Quick
• Der EFI-Partition (EPS) nun einen Laufwerksbuchstaben zugewiesen
assign letter=Z: (Falls der Laufwerksbuchstabe vergeben ist, einen anderen nutzen)
exit

In der Eingabeaufforderung nun:
bcdboot c:\Windows /l de-de /s Z: /f UEFI und Enter (c: = Startpartition)

Nun meine naive Frage, ließe sich diese Reparatur automatisieren?
Natürlich müsste die Nummer der Systempartition und der Laufwerksbuchstabe zwischendurch einegeben werden, bevor es weitergeht.
 

dr_tommi

alter Oldie
Diskpart lässt sich per Script steuern
Das ganze dann in eine Batch-Datei (cmd, Powershell oder was auch immer) und fertig.
Selbst eine Eingabe von Werten und die Prüfung ob Laufwerkbuchstaben vergeben sind lässt sich damit realisieren.
 

VanFlusen

Themenstarter
Bekanntes Mitglied
Danke @dr_tommi,
aber davon habe ich mal gar keine Ahnung.
Ich habe eine Batch-Datei im Netz gefunden, welche unter anderem eine Bios/MBR-Reparatur durchführt aber eben keine UEFI Reparatur.
Evtl. ließe sich beides kombinieren?
Da ich aber keine Ahnung von der Erstellung eines Skripts habe, wäre hier evtl. jemand bereit dieses zu erstellen?
Ich würde dieses Skript dann gerne in eine WIN PE integrieren.
 

Anhänge

  • Reparatur.txt
    1,2 KB · Aufrufe: 13

Rubb

Rover
.... bin damit auch ab und zu beschäftigt .... allerdings nicht mit UEFI ...

Du kannst da evtl. hilfreiches bei heise finden, habe jetzt nur einmal eine Suchanfrage gestartet (die Begriffe evtl. noch etwas verändern ..... )
Diese Themen sind dort verständlich und hilfreich ab und an dargestellt!

-->> metager.de

"heise.de ct Bios/MBR-Reparatur"
 

SkAvEnGeR

Master of Tools
In diesem Script wird nur Kleinkram gemacht.
Da sind Sachen drin, die man eh machen sollte, wenn das System ein bisschen rumspinnt.

Weiterhin fehlen dort komplett jegliche Diskpart-Befehle.

Kurzum: Dieses Script taugt nicht die Bohne für dein Vorhaben.

Man könnte die Diskpart-Befehle automatisieren.
Problematisch ist dabei nur, dass die Nummer des Volumes verschieden sein kann.
Wie man diese Nummer dann innerhalb der Automatisierung von Diskpart abfragen kann, ist mir nicht bekannt.
Wenn die Werte jedoch bekannt sind, kann man die in ein Script übernehmen.
 

dr_tommi

alter Oldie
Wie man diese Nummer dann innerhalb der Automatisierung von Diskpart abfragen kann, ist mir nicht bekannt.
Man kann doch Diskpart mehrfach aufrufen. Frisst doch in einem Script kein Brot.
Zuerst mit z.B. Diskpart /s listvol.txt > vol.txt die Volumes abfragen wobei die listvol.txt nur den Befehl "list vol" enthält.
Als Ergebnis kommt dann z.B. sowas:
Microsoft DiskPart-Version 10.0.19041.964 Copyright (C) Microsoft Corporation. Auf Computer: TOM-MINI Volume ### Bst Bezeichnung DS Typ Größe Status Info ---------- --- ----------- ----- ---------- ------- --------- -------- Volume 0 D VolumeD NTFS Partition 465 GB Fehlerfre Volume 1 C System NTFS Partition 475 GB Fehlerfre Startpar Volume 2 SYSTEM FAT32 Partition 100 MB Fehlerfre System Volume 3 Recovery NTFS Partition 982 MB Fehlerfre Versteck
Dann kann man die Datei vol.txt mit einer Schleife abfragen um die einzelnen Volumes zu ermitteln und wenn dann die Parameter der jeweiligen gewünschten Partition passen dann hat man die Nummer und kann mit der weitermachen.

Und die Liste der vergebenen Laufwerksbuchstaben hat man so auch gleich.
 

VanFlusen

Themenstarter
Bekanntes Mitglied
In diesem Script wird nur Kleinkram gemacht.
Da sind Sachen drin, die man eh machen sollte, wenn das System ein bisschen rumspinnt.

Da ich nicht in der IT tätig bin und die einzelnen Befehle nicht im Kopf habe, ist dieses Skript für mich schon recht hilfreich.
Es war auch nur so ein Gedanke, dass man dieses Skript evtl. erweitern könnte.

Ich werde mal versuchen die Grundkenntnisse zu erwerben um zu verstehen, wie ein Skript geschrieben wird.
 

dr_tommi

alter Oldie
Wenn du genau formulierst, was du haben willst und woran man z.B. die zu reparierende Partition automatischen erkennen kann, ist es unter Umständen möglich dass wir dir mit unserem Schwarmwissen etwas unter die Arme greifen können.
 

VanFlusen

Themenstarter
Bekanntes Mitglied
Ich hoffe nicht, das meine Aussage in irgendeiner Weise missverständlich aufgefasst wurde.
Ich habe in diesem Forum bisher viel lernen können und bin sehr dankbar dafür.
Ich bin mir im klaren darüber das hier niemand eine Schulung zur Erstellung eines Skripts vornimmt.
Deshalb muß ich versuchen die Grundkenntnisse zu erwerben um z. B. die Informationen oder Tips: '' Dann kann man die Datei vol.txt mit einer Schleife abfragen '' zu verstehen.
Hilfe würde ich aber dennoch gerne in Anspuch nehmen.

Es würde mir reichen die Befehle aus #1 zu automatisieren.
Um die UEFI Partition zu erkennen würde doch die Prüfung auf das vorhandensein einer FAT32 PTN reichen.
Um einen Laufwerssbuchstaben festzulegen, sollte W: funktionieren, da dieser selten in Gebrauch ist.

00.PNG
 

dr_tommi

alter Oldie
ok, den ersten Teil gebe ich mal vor:
@echo off echo list vol > %temp%\listvol.txt diskpart /s %temp%\listvol.txt > %temp%\voltemp.txt FOR /F "TOKENS=2 DELIMS= " %%A IN ('TYPE %temp%\voltemp.TXT ^| FIND /I "FAT32"') DO ECHO SELECT VOLUME %%A

Diese Batchdatei schreibt in eine Textdatei im Temp-Verzeichnis den Befehl zum Anzeigen der Volumes und führt Diskpart mit dieser Parameterdatei aus.
Das Ergebnis wird ein eine zweite Textdatei geschrieben.
Diese wird dann mit dem Suchmuster "FAT32" ausgewertet und die Nummer des gesuchten Volumes steht dann in %%A und wird in diesem Beispiel angezeigt.
Damit hätten wir dann die Nummer des Volumes das wir bearbeiten wollen.
Jetzt müsste man die gewünschten Befehle der Reihe nach in eine weitere Befehlsdatei eintragen lassen und Diskpart dann mit dieser ein weiteres Mal starten.
 

dr_tommi

alter Oldie
Ich hatte gestern bei einer Schulung noch etwas Zeit nebenbei.
Hier also eine mögliche "Deluxe-Version":

Code:
@echo off
set col=":"
rem Abfrage des letzten freien LW
for %%i in (c 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 not exist %%i:/nul echo %%i > %temp%\lw.txt
FOR /F "TOKENS=1 DELIMS= " %%X IN (%temp%\lw.txt) DO set lw=%%X
echo Letzter freier Laufwerksbuchstabe ist %lw%

rem Abfrage des Windowslaufwerks, gegebenenfalls die Buchstaben in der Klammer (e d c) anpassen.
rem Wenn letztes Windowslaufwerk gesucht wird, dann die Reihenfolge der Laufwerksbuchstaben umkehren (c d e)
for %%j in (e d c) do @if exist %%j:\windows\NUL echo %%j > %temp%\lw2.txt
FOR /F "TOKENS=1 DELIMS= " %%X IN (%temp%\lw2.txt) DO set lw2=%%X
echo Windows gefunden in %lw2%:\windows

del %temp%\repairvol.txt
echo list vol > %temp%\listvol.txt
diskpart /s %temp%\listvol.txt > %temp%\voltemp.txt
FOR /F "TOKENS=2 DELIMS= " %%A IN ('TYPE %temp%\voltemp.TXT ^| FIND /I "FAT32"') DO (
ECHO SELECT VOLUME %%A >> %temp%\repairvol.txt
ECHO format FS=Fat32 Quick >> %temp%\repairvol.txt
ECHO assign letter=%lw%%col:~1,1% >> %temp%\repairvol.txt
)
Rem Für die Durchführung der folgenden Befehle die beiden ECHO-Befehle entfernen
rem Hier nur ausgabe der "fertigen" Befehle
echo diskpart /s %temp%\repairvol.txt
echo bcdboot %lw2%:\Windows /l de-de /s %lw%%col:~1,1% /f UEFI

Keine Ahnung ob das unter WinPE auch so läuft und das gewünschte macht, aber es sieht gut aus. ;)

/Edit: Beim Format das Quick vergessen. Sorry.
 
Zuletzt bearbeitet:

VanFlusen

Themenstarter
Bekanntes Mitglied
Um dein Skript zu erstellen braucht man wahrscheinlich jahrelange Erfahrung.

Ich habe die bootmgfw.efi und bootmgr.efi von der UEFI FAT32 PTN gelöscht, System bootet nicht mehr.
WIN PE gestartet und dein Skript vom Desktop ausgeführt.
In der aufblitzenden Eingabeaufforderung konnte ich nur ''Temp\Volume.txt konnte nicht gefunden werden'' erkennen.

Rechner neu gestartet und das System funktioniert wieder. :icon_knud:
Vielen,vielen Dank @dr_tommi für deine Hilfe.
Ich muß nun leider zum Flieger und bin eine Woche unterwegs.
 

dr_tommi

alter Oldie
In der aufblitzenden Eingabeaufforderung konnte ich nur ''Temp\Volume.txt konnte nicht gefunden werden'' erkennen.
Das kommt vom Löschen der Datei.
Code:
del %temp%\repairvol.txt
Das ist nur zur Sicherheit drin, da ja die weiteren Befehle nur angehängt werden. Falls die Datei also schon vorhanden ist würden dann die "alten" Befehle auch mit ausgeführt werden..
Man könnte das auch anders lösen, z.B. indem man die Datei neu erzeugt.
Code:
echo. > %temp%\repairvol.txt
 
Oben Unten