kollisionskurs

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!
Auf Facebook teilen
Auf X (Twitter) teilen
Auf Reddit teilen
Auf Linkedin teilen

Content-ID: 244076

Url: https://administrator.de/forum/mehrzeilige-diskpart-befehle-aus-einer-textdatei-auslesen-244076.html

Ausgedruckt am: 26.04.2025 um 10:04 Uhr

colinardo
Lösung colinardo 18.07.2014, aktualisiert am 11.09.2014 um 14:25:49 Uhr
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