anmelder
Goto Top

Diskpart Datei in Batch generieren und ohne speichern ausführen

Hallo,

meine Batch stellt die gewünschte Konfiguration während der Laufzeit zusammen welche dann an Diskpart übergeben werden soll ohne die Datei zu speichern.


echo off
cls

SETLOCAL ENABLEDELAYEDEXPANSION

SET NeueZeile=^


REM Ende Leerzeichen nicht entfernen

set test=(echo select disk 0!NeueZeile!
set test=!test!echo select volume 1!NeueZeile!
set test=!test!echo list volume!NeueZeile!
set test=!test!) | DISKPART

!test!

Es kommt der Fehler "Der Befehl "(echo" ist entweder falsch geschrieben oder konnte nicht gefunden werden."

echo AA!test!AA

ergibt

DISKPART> AA(echo select disk 0
echo select volume 1
echo list volume
AA

Vermutlich fehlt da die letzte schließende Klammer aber weder das ^ noch die Klammerverdoppelung bewirkt etwas.

Muß man am Ende eigentlich ein "ECHO exit" stehen oder wird Diskpart von selbst sauber beendet?

Grüße,

Content-ID: 520298

Url: https://administrator.de/forum/diskpart-datei-in-batch-generieren-und-ohne-speichern-ausfuehren-520298.html

Ausgedruckt am: 22.12.2024 um 16:12 Uhr

141965
141965 28.11.2019 aktualisiert um 19:34:11 Uhr
Goto Top
Es reicht einfach folgendes zu machen, klammere alle untereinander geschriebenen echo Befehle und pipe das an diskpart, fertsch.
(
echo select disk 0
echo select volume 1
echo list volume
echo exit
) | diskpart
anmelder
anmelder 28.11.2019 um 19:39:24 Uhr
Goto Top
Ja klar, das Beispiel kenne ich. Dann ist der Code aber fest in der Batch eingebaut. Hier sollen aber während der Laufzeit Entscheidungen getroffen werden und das geht nur wenn ich den Code in einer Variablen erzeuge:

set test=!test!echo select volume 1!NeueZeile!

Die Übergabe der Variable an Diskpart funktioniert aber nicht.
rubberman
Lösung rubberman 28.11.2019 aktualisiert um 19:55:54 Uhr
Goto Top
@echo off &setlocal EnableDelayedExpansion

(set lf=^
%==%
)

set "test=(echo select disk 0!lf!"  
set "test=!test!echo select volume 1!lf!"  
set "test=!test!echo list volume!lf!"  
set "test=!test!) | DISKPART"  

%test%
pause
Zuweisungen immer in Anführungszeichen setzen um Probleme mit Sonderzeichen wie | zu vermeiden. Beim Ausführen des Codes die Variable in Prozentzeichen setzen.

Steffen
anmelder
anmelder 29.11.2019 um 09:07:20 Uhr
Goto Top
Ja das war der Fehler. Ich habe immer versucht die Anfühungszeichen ab dem echo zu setzten.

Danke