gabrixl
Goto Top

Diskpart.exe output in Textdatei per CMD

Hallo Zusammen

Ich möchte den Output von DETAIL DISK in eine Textdatei schreiben.
Mein Ansatz ist wie folgt:

Script:

diskpart /s diskpart_script.txt > output.txt

In diskpart_script.txt steht folgendes:

SELECT DISK 0
DETAIL DISK

(Der find Teil )

Laut Foren sollte das nun funktionieren. Habe ebenfalls oft gelesen das man die Batch Datei als Administrator ausführen muss, jedoch ist die output.txt immer leer.
Bin offen für einfachere Lösungsvorschläge, das Ziel ist es schlussendlich noch mit find die Datenträger-ID in eine Variable zu lesen.


Vielen Dank im Voraus.


Gruss gabrixl

Content-ID: 348112

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

Ausgedruckt am: 23.11.2024 um 22:11 Uhr

Penny.Cilin
Penny.Cilin 04.09.2017 um 12:50:39 Uhr
Goto Top
Zitat von @gabrixl:

Hallo Zusammen
Hallo,

Ich möchte den Output von DETAIL DISK in eine Textdatei schreiben.
Mein Ansatz ist wie folgt:

Script:

diskpart /s diskpart_script.txt > output.txt

In diskpart_script.txt steht folgendes:

SELECT DISK 0
DETAIL DISK

(Der find Teil )

Laut Foren sollte das nun funktionieren. Habe ebenfalls oft gelesen das man die Batch Datei als Administrator ausführen muss, jedoch ist die output.txt immer leer.
Bei mir in einer CMD.EXE mit administrativen Berechtigungen funktioniert es OHNE Probleme.
Die Datei wird erstellt und der Inhalt ist wie angegeben vorhanden.

Selbst mal ausprobiert?


Gruss Penny
gabrixl
gabrixl 04.09.2017 aktualisiert um 14:26:42 Uhr
Goto Top
Sorry habe mich unklar ausgedrückt, wenn ich das in CMD.EXE als Administrator ausführe funktioniert es bei mir ebenfalls ohne Probleme.
Da ich den genau gleichen Befehl nun aber in einem Batch File brauche, dies aber nicht funktioniert habe ich gehofft das Ihr mir vielleicht weiter helfen könnt.

Dies steht in meinen Batch File drin: diskpart /s diskpart_script.txt > output.txt

Ich mache rechts klick > als Administrator ausführen (gebe genau den selben Benutzer wie wenn ich es über CMD.EXE mache an) > es öffnet sich kurz das Terminal, geht wieder zu und eine leere output.txt entsteht... Habe es ebenfalls versucht mit runas /user:xxx "diskpart /s diskpart_script.txt > output.txt" - dann wird kein Output.txt erstellt.

Irgendwelche Ideen?
Pjordorf
Lösung Pjordorf 04.09.2017 aktualisiert um 14:25:25 Uhr
Goto Top
Hallo,

Zitat von @gabrixl:
Laut Foren sollte das nun funktionieren.
Si

Habe ebenfalls oft gelesen das man die Batch Datei als Administrator ausführen muss
Auch Si.

Als Admin Ausführen
diskpart.exe /S D:\Prepare_Storage\HDDLeerenGPT_E_II.txt >>D:\Prepare_Storage\HDD_E_II.log
und der Inhalt der HDDLeerenGPT_E_II.txt lautet
REM GO1984-2 Aktivieren
REM Disk 3 (4TB) als GPT nutzen
REM KAMERAS Alle
list disk

select disk 1
select partition 2
remove letter=E

select disk 3
clean

convert gpt

create partition primary

select partition 2

format quick fs=ntfs label="Go1984-2"  
assign Letter="E"  

exit
und in der Log Datei steht drin was gemacht wurde, hier Vorbereiten für Go1984. Vermutlich findet dein DiskPart deine Skriptdatei nicht - also Diskpart_script.txt mitsamt seinen Pfad aufrufen.

Gruß,
Peter
gabrixl
gabrixl 04.09.2017 um 14:41:32 Uhr
Goto Top
Danke, so hat es geklappt! Es lag am Pfad... die Output.txt wurde immer ins System32 geschrieben... Grad noch eine Idee wie ich den Pfad des Batch Files auslesen kann so das ich keine absolute Angabe machen muss?
Pjordorf
Pjordorf 04.09.2017 um 14:48:17 Uhr
Goto Top
Hallo,

Zitat von @gabrixl:
Grad noch eine Idee wie ich den Pfad des Batch Files auslesen kann so das ich keine absolute Angabe machen muss?
Diskpart kennt nur die Befehle die dort selbst siehst. Da Diskpart aber mit der Steuerdatei geladen werden will, muss du auf batchebene den Pfad vorher feststellen bzw. angeben. Ein For /? zeigt dir einige Variablen an welche du evtl. nutzen kannst. Oder wenns viele viele Platten sind die du auslesen willst, Netzwerkfreigabe nutzen wo die Pfade immer gleich sind.

Gruß,
Peter
gabrixl
gabrixl 04.09.2017 um 15:27:04 Uhr
Goto Top
Danke für die Hilfe, hätte noch ein Sache und dann bin ich endgültig ruhig. Da ich ja nur die Datenträger-ID brauche, muss ich noch irgendwie über einen findstr die ID aus dem ganzen raus schneiden. Hast du dazu grad was? Mein Gedanke sieht so aus: for /f %%i IN (findstr /b "-ID :"" & /e """ PFAD) set ID=%%i

Bin aber bei den findstr Parametern nicht so gut mitgekommen...

Danke im Voraus!

Gruss gabrixl
Pjordorf
Pjordorf 04.09.2017 um 16:14:49 Uhr
Goto Top
Hallo,

Zitat von @gabrixl:
Da ich ja nur die Datenträger-ID brauche, muss ich noch irgendwie über einen findstr die ID aus dem ganzen raus schneiden.
Auch dies kann nur ausserhalb von Diskpart gehen. Diskpart kann dir da nicht helfen. Also nach dem laufen von Diskpart (du bist immer noch in deiner Bachdatei) deine LogDatei öffnen und dort suchen z.B.
type "E:\Daten\HDD_E_II.log" | find "Datentr„ger-ID:"  
Das wars. Notfalls Zeichensatz anpassen (chcp 1252)

Gruß,
Peter