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-Key: 520298

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

Printed on: April 25, 2024 at 15:04 o'clock

Mitglied: 141965
141965 Nov 28, 2019 updated at 18:34:11 (UTC)
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
Member: anmelder
anmelder Nov 28, 2019 at 18:39:24 (UTC)
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.
Member: rubberman
Solution rubberman Nov 28, 2019 updated at 18:55:54 (UTC)
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
Member: anmelder
anmelder Nov 29, 2019 at 08:07:20 (UTC)
Goto Top
Ja das war der Fehler. Ich habe immer versucht die Anfühungszeichen ab dem echo zu setzten.

Danke