Jump to content

Batch Laufwerksabfrage für Imaging


Der letzte Beitrag zu diesem Thema ist mehr als 180 Tage alt. Bitte erstelle einen neuen Beitrag zu Deiner Anfrage!

Empfohlene Beiträge

Hallo Scriptinggemeinde,

 

ich habe folgendes Problem;

ich versuche gerade eine Imaginglösung für unsere Servicetechniker zu entwerfen. Es funktioniert auch soweit allerdings gibt es noch 1-2 unschöne Meldungen die ich gerne beseitigt hätte...nicht das die Techniker die dann mit diesem Programm ausgerüstet werden nervös werden und den ganzen Vorgang abbrechen.

Das Programm ist ein WinPE mit angepassten Batchscripten in welchen der Techniker nur zwei Eingaben macht und dann automatisch die Festplatte formatiert wird und ein Image via Imagex überspielt wird...

Da WinPE (der USB Stick) immer automatisch einen Laufwerksbuchstaben nach den lokalen Festplatten nimmt (das System selber hat ja immer X:) brauchte ich eine Abfrage. Denn das Image wird auf den USB Stick gespeichert nicht im WinPE.

 

Folgenden Programmteil will ich hier kurz posten und dann beschreiben wo mein Problem liegt:

 

If exist C:\Image goto C 
If exist D:\Image goto D 
If exist E:\Image goto E 
If exist F:\Image goto F 
If exist G:\Image goto G 
If exist H:\Image goto H 
If exist I:\Image goto I 
If exist J:\Image goto J 
If exist K:\Image goto K 


:C
X:\Windows\System32\imaging\imagex.exe  /apply c:\Image\boot.wim 1 I:\ /verify /check 
goto exit

:D
X:\Windows\System32\imaging\imagex.exe  /apply d:\Image\boot.wim 1 I:\ /verify /check 
goto exit

:E
X:\Windows\System32\imaging\imagex.exe  /apply e:\Image\boot.wim 1 I:\ /verify /check 
goto exit

:F
X:\Windows\System32\imaging\imagex.exe  /apply f:\Image\boot.wim 1 I:\ /verify /check 
goto exit

:G
X:\Windows\System32\imaging\imagex.exe  /apply g:\Image\boot.wim 1 I:\ /verify /check 
goto exit

:H
X:\Windows\System32\imaging\imagex.exe  /apply h:\Image\boot.wim 1 I:\ /verify /check 
goto exit

:I
X:\Windows\System32\imaging\imagex.exe  /apply i:\Image\boot.wim 1 I:\ /verify /check 
goto exit

:J
X:\Windows\System32\imaging\imagex.exe  /apply j:\Image\boot.wim 1 I:\ /verify /check 
goto exit

:K
X:\Windows\System32\imaging\imagex.exe  /apply k:\Image\boot.wim 1 I:\ /verify /check 
goto exit

:exit

 

Das überspielen des Images klappt allerdings bekomme ich bei der Abfrage der existierenden Pfade die Fehler das der Systempfad nicht gefunden wird...

Ich habe bereits mit >NUL gearbeitet aber das funktioniert auch nicht. Wenn ich den Zusatz >NUL hinter die Pfadangabe schreibe dann wird das ImageX Programm im Ablauf unterdrückt was wirklich ganz **** ist da nun die letzte Info im Shell: Systempfad nicht gefunden.. erscheint was wiederum jemanden bei der Benutzung der Batch dazu veranlassen könnte alles abzubrechen.

 

Ich hoffe ich konnte euch mein Problem vernünftig darstellen und ihr könnt mir dabei helfen.

 

Vielen Dank und ein frohes Osterfest

 

Gruß,

n8watcher

Link zu diesem Kommentar

Probiers doch mal gem. diesem Beispiel:

 

IF EXIST D:\CD.txt set CDROM=D:
IF EXIST E:\CD.txt set CDROM=E:
IF EXIST F:\CD.txt set CDROM=F:
IF EXIST G:\CD.txt set CDROM=G:
IF EXIST H:\CD.txt set CDROM=H:
IF EXIST I:\CD.txt set CDROM=I:
IF EXIST J:\CD.txt set CDROM=J:


start /wait "%CDROM%\EXTRAS\2KXPWS03\DxSetup.exe /i /qn  /li %temp%\dxsetup.log ANS=1"
start /wait %CDROM%\EXTRAS\NVIDIA\SETUP.EXE -s
start /wait %CDROM%\EXTRAS\SOUND\SETUP.EXE -s

Link zu diesem Kommentar
Aber was hat das mit dem verstecken der Fehlermeldung zutun? Warum denn SET? So wie es momentan ist, funktioniert es ja es gibt halt nur diese Fehlermeldung...

 

Mein Beispiel ist wesentlich kürzer und übersichtlicher. Und es erzeugt keine überflüssigen Fehlermeldungen.

 

Das SET gibt der Variable CDROM einen Inhalt. Mit dem Inhalt kannst Du dann weiterarbeiten.

 

IF EXIST D:\CD.txt set CDROM=D:
IF EXIST E:\CD.txt set CDROM=E:

REM Kopieren/bereitstellen starten...
X:\Windows\System32\imaging\imagex.exe  /apply %CDROM%:\Image\boot.wim 1 I:\ /verify /check 
goto exit

 

Du sparst dir bei dieser Variante die restlichen Zeilen des kopieren/zuweisen vom Image, da Du keine harten Pfade verwendest, sondern eine Variable.

 

 

Dein Ansatz ist doch ein komplett anderer wenn ich das richtig verstanden habe...

 

Was ist dein Ziel? Einen Kopiervorgang durchführen, bei dem Du vorher nicht weißt, auf welchem LW-Buchstaben die Source liegt, richtig? Wenn ja, dann probier das gepostete Beispiel aus. Es ist kürzer, übersichtlicher und sicherer, da Du nur einmal die Variable %CDROM%, oder welchen Namen Du auch immer dafür verwenden willst, befüllst. Eigentlich müsstest Du ja auf 26 LW-Buchstaben prüfen, dein Script hätte dann 52 Zeilen, meines nur 27. ;)

Link zu diesem Kommentar

Nein das ist kein normaler Kopiervorgang wenn du dir den Pfad anschaust wird die imagex.exe ausgeführt womit die boot.wim auf den von mir zuvor formatierten Partition applied wird. Hier nochmal der komplette Code:

 

@ECHO OFF
ECHO "Image Deployment"
ping localhost-n 8 
ECHO list disk >scriptdiskpart.txt
ECHO.
ECHO.
ECHO.

ECHO select disk=%%selected%% >>scriptdiskpart3.txt
ECHO clean >>scriptdiskpart3.txt
ECHO create partition primary  >>scriptdiskpart3.txt
ECHO active >>scriptdiskpart3.txt 
ECHO assign letter = I >>scriptdiskpart3.txt
ECHO format fs=ntfs quick >>scriptdiskpart3.txt
ECHO exit >>scriptdiskpart3.txt 




diskpart /s scriptdiskpart.txt
ECHO.
ECHO.
ECHO.
set /p selected="Beware of a false choice it can be erase all your data!!! Please select a disk (0/1/2):"
@ECHO OFF



diskpart /s scriptdiskpart3.txt
Del /S/Q C:\WinPE_to_HDD\scriptdiskpart3.txt
Del /S/Q C:\WinPE_to_HDD\scriptdiskpart.txt


If exist C:\Image goto C 
If exist D:\Image goto D 
If exist E:\Image goto E 
If exist F:\Image goto F 
If exist G:\Image goto G 
If exist H:\Image goto H 
If exist I:\Image goto I 
If exist J:\Image goto J 
If exist K:\Image goto K 


:C
X:\Windows\System32\imaging\imagex.exe  /apply c:\Image\boot.wim 1 I:\ /verify /check 
goto exit

:D
X:\Windows\System32\imaging\imagex.exe  /apply d:\Image\boot.wim 1 I:\ /verify /check 
goto exit

:E
X:\Windows\System32\imaging\imagex.exe  /apply e:\Image\boot.wim 1 I:\ /verify /check 
goto exit

:F
X:\Windows\System32\imaging\imagex.exe  /apply f:\Image\boot.wim 1 I:\ /verify /check 
goto exit

:G
X:\Windows\System32\imaging\imagex.exe  /apply g:\Image\boot.wim 1 I:\ /verify /check 
goto exit

:H
X:\Windows\System32\imaging\imagex.exe  /apply h:\Image\boot.wim 1 I:\ /verify /check 
goto exit

:I
X:\Windows\System32\imaging\imagex.exe  /apply i:\Image\boot.wim 1 I:\ /verify /check 
goto exit

:J
X:\Windows\System32\imaging\imagex.exe  /apply j:\Image\boot.wim 1 I:\ /verify /check 
goto exit

:K
X:\Windows\System32\imaging\imagex.exe  /apply k:\Image\boot.wim 1 I:\ /verify /check 
goto exit

:exit

 

Da das Script nur auf Industriepcs mit einer Festplatte und höchstens 3 Partitionen ausgeführt wird brauche ich auch nicht alle 52 LW Buchstaben absuchen denn wie schon am Anfang beschrieben startet WinPE und gibt sich ja automatisch den nächsten verfügbaren LW Buchstaben nach den vorhandenen Partitionen. Deshalb prüfe ich nur so wenig...

Also letztendlich sollen nur die ersten 9 LW Buchstaben nach dem Pfad mit der boot.wim überprüft werden sodass anschließend die imagex.exe die in dem übergebenen Pfad enthaltene Imagedatei auf die zuvor formatierte Partition applied.

 

Ich hoffe ich konnte dir vermitteln was ich erreichen will ;-)

Link zu diesem Kommentar

So habs ausprobiert selbes Problem mit der fehlenden Pfadangabe und diesmal wird sogar noch nicht einmal das Programm angesprochen...folgendes habe ich abgeändert:

 

IF exist C:\Image set LW=C:
IF exist C:\Image set LW=D:
IF exist C:\Image set LW=E:

REM Applying Image
X:\Windows\System32\imaging\imagex.exe /apply %LW%\Image\boot.wim 1 I:\ /verify /check
goto exit
:exit

 

Fehlermeldung : Das System kann den angegebenen Pfad nicht finden 2x

dann findet es auf LW E: (USB Stick) den Pfad und springt zum Programm wo aber nun eine Fehlermeldung ala Nicht korrekte Syntax verwenden Sie das Programm mit folgenden Parametern kommt...also scheint die Veränderung %LW% nicht funktioniert zu haben ...

Hab ich nochwas vergessen?

bearbeitet von n8w4tch3r
Link zu diesem Kommentar

Hi,

 

also selbst wenn ich folgendes eingebe bleibt das Ergebnis das gleiche was

auch logisch ist da ja nur eine Abfrage des verfügbaren Pfades stattfinden soll da auf den anderen Partitionen kein *:\Image\ existiert

IF exist C:\Image\boot.wim set LW=C:
IF exist C:\Image\boot.wim set LW=D:
IF exist C:\Image\boot.wim set LW=E:

REM Applying Image
X:\Windows\System32\imaging\imagex.exe /apply %LW%\Image\boot.wim 1 I:\ /verify /check
goto exit
:exit

Link zu diesem Kommentar

Hi zahni,

 

nein die Sicherheitsabfrage ist nicht zu spät...nachdem das LW gewählt wurde kommt die Abfrage wenn man hier n für nein drückt wird die ganze Sache abgebrochen (ich hätte es auch weggelassen aber bei den Technikern weiß man ja nie - im Supportfall hat man dann wenigstens noch das Argument - dort war doch extra noch ne Warnung spätestens da hätten Sie es nochmal überpüfen können)

Ich benutze WinPE 3.0, und ja ich weiß dass er das System als X einbindet..aber NUR das System die USB Stick Partition wird automatisch mit dem nächsten verfügbaren Buchstaben gemountet (bei mir meist D,E oder F)...

Schade das an der Stelle keiner ne Idee zur Unterdrückung der Fehlermeldung hat...

 

Gruß,

n8watcher

Link zu diesem Kommentar
Der letzte Beitrag zu diesem Thema ist mehr als 180 Tage alt. Bitte erstelle einen neuen Beitrag zu Deiner Anfrage!

Schreibe einen Kommentar

Du kannst jetzt antworten und Dich später registrieren. Falls Du bereits ein Mitglied bist, logge Dich jetzt ein.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung jetzt entfernen

  Only 75 emoji are allowed.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor-Fenster leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

×
×
  • Neu erstellen...