Bug in der startnet.cmd (win7-x64)

Antworten
Twenix
Beiträge: 6
Registriert: 16 Jun 2010, 15:27

Bug in der startnet.cmd (win7-x64)

Beitrag von Twenix »

Hallo ihrs :)

seit einiger Zeit habe ich ein Problem mit dem Paket win7-x64 (32-bit nicht getestet, aber wahrscheinlich genauso)und bin endlich auf die Ursache gekommen: Die Datei startnet.cmd setzt die Variable %pe_drive% IMMER auf C:\ (auch wenn die PE-Dateien auf einem anderen Laufwerk liegen; wie bei mir auf E:\).

Dies entsteht folgendermaßen. Zuerst ein kleines Beispiel (abgeleitet von der startnet.cmd):

@echo off
set pe_drive=c:\
for %%d in (c: d: e: f: g: h: i: j: k: l: m: n: o:) do (
if exist %%d\\testdatei.txt (
set pe_drive=%%d
echo WinPE drive ist %pe_drive%
echo Getestet wurde aber %%d
)
)

So, was tut die Datei?
- Standard WinPE drive auf C:\ setzen
- Alle möglichen Laufwerke durchtesten, ob testdatei.txt existiert
- Falls ja: WinPE drive setzen, WinPE drive ausgeben, das soeben getestete Laufwerk ausgeben

Gehen wir davon aus, dass testdatei.txt auf D: existiert, so heißt die Ausgabe (fälschlicherweise):
WinPE drive is c:\
Getestet wurde aber d:

Grund: In der Schleife aktualisiert er den Wert der Variablen %pe_drive% nicht durch den set-Befehl, falls sie vor der Schleife bereits gesetzt wurde. Ich und meine Kollegen sind überfragt wieso.

Lösung: set pe_drive=c:\ vor der Schleife weglassen.

Schönen Gruß,
Christian

EDIT: Lösung behebt zwar das Problem in der startnet.cmd, aber in der aufgerufenen work.cmd ist der Wert von %pe_drive% auch immer C:\ ist. Ich verstehe aber ehrlich gesagt auch nicht, warum das PE-Drive JEDES ZWEITE MAL E: und nicht C: ist. In der unattend.xml wird auch immer auf C:\drv verweist... Also müsste ich "einfach" dafür sorgen, dass das WinPE-drive beim Draufkopieren der Dateien C: ist und auch so bleibt...
Antworten