kollisionskurs
Goto Top

Mehrzeilige diskpart Befehle aus einer Textdatei auslesen

Hallo zusammen,

ich steh gerade etwas auf dem Schlauch.
In unserem Netzwerk liegen verschiedene System-Images (*.wim) bereit - die Infos zum eigentlichen Image sind in einer gleichnamigen Textdatei ("Beschreibungsdatei") eingetragen.
Mittels WinPE, dism und einem Batch-Skript werden die Infos ausgelesen und dann wird das Image entsprechend auf dem Zielsystem aufgespielt.

Die Beschreibungsdatei ist unspektakulär aufgebaut:

fileName=Image_#Release#_#Date#.wim
partSizeC=8192
versionInfo="Image XY @ Hardware XY"


Die Partitionsgröße wird zum Beispiel mit folgendem Befehl eingelesen:

 
for /f "tokens=2,* delims==" %%k in ('Find /i "partSizeC" %imageDrive%\%imageDescFile%') Do @Set partSizeC=%%k  
SET "ixPartSizeC=%partSizeC%"  


Aufgrund einer Änderung möchte ich zukünftig die kompletten diskpart-Befehle aus der externen Beschreibungsdatei auslesen und in einer Variablen innerhalb von meinem WinPE Batch File speichern.

Die Beschreibungsdatei wird somit um folgendes exemplarisch erweitert:

diskpart="list disk
select disk 0
clean
create partition primary size=350
format quick fs=ntfs label="System Reserved"
assign letter="S"
active"


Wie kann ich diese mehrzeiligen Befehle aus der "diskpart"-Variablen (aus der externen Beschreibungsdatei) auslesen und innerhalb meiner Batch.Datei in einer anderen Variablen speichern? Egal wie ich es bisher versucht habe funktioniert es nicht.

Für jeden Tipp dankbar...thx!

Content-Key: 244076

Url: https://administrator.de/contentid/244076

Printed on: April 23, 2024 at 20:04 o'clock

Member: colinardo
Solution colinardo Jul 18, 2014, updated at Sep 11, 2014 at 12:25:49 (UTC)
Goto Top
Moin Kollisionskurs,
eine Variante wäre folgende: Wenn du die diskpart Befehle in eine Zeile packst und z.B. jeweils mit einer Raute (#) voneinander trennst:
diskpart="list disk#select disk 0#clean#create partition primary size=350#format quick fs=ntfs label="System Reserved"#assign letter="S"#active"
könntest du sie so in eine Scriptdatei exportieren.
@echo off & setlocal ENABLEDELAYEDEXPANSION
set NL=^


REM Die vorherigen zwei Leerzeilen nicht entfernen
for /f "tokens=1,* delims==" %%a in ('findstr /ib "diskpart" "%imageDrive%\%imageDescFile%"') DO set "commands=%%~b"  

:: Raute durch Zeilenumbruch ersetzen
set "commands=%commands:#=!NL!%"  

:: Befehle in Diskpart-Scriptdatei schreiben
(for /f "delims=" %%a in ("!commands!") DO echo %%a)>"%temp%\diskpart_script.txt"  
Grüße Uwe