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...