2016-07-02 4 views
2

Es wird versucht, die Anzahl der Festplatten in einem System mit diskpart zu ermitteln, ohne eine temporäre Datei zu verwenden. Dies funktioniert in der Befehlszeile:Wie können die Ergebnisse einer Pipeline in einer Batch-Datei ohne temporäre Datei erfasst werden?

aber ich kann nicht herausfinden, wie Sie das Ergebnis in eine Batch-Var umleiten. Natürlich ist die Zahl, die von der obigen Pipeline gedruckt wird, aufgrund von Beschriftungen höher, aber sie sind konstant (dividiere das Ergebnis um 3 für die tatsächliche Anzahl von Platten).

Irgendwelche Ideen?

Ich habe versucht:

set /A disks=<echo list disk... 
set /A disks<echo list disk... 
set /A disks= (echo list disk ...) 

Antwort

0

Sie benötigen FOR F für die Erfassung der Ausgabe eines Programms.

set "cmd=echo list disk | diskpart | find /C "Disk"" 
setlocal EnableDelayedExpansion 
FOR /F "usebackq delims=" %%A in (`!cmd!`) do (
    set var=%%A 
) 
echo !var! 
+0

Abgesehen von der fehl am Platze Zitat Im Set war das perfekt! Ich bin hier relativ neu, also wie akzeptiert man diese Antwort, oder denke ich an eine andere ähnliche Form? –

+0

Die Anführungszeichen sind perfekt platziert, das ist die erweiterte Syntax des 'set' Befehls, um Leerzeichen zu vermeiden und mit Sonderzeichen zu arbeiten. – jeb

+0

@motechman Um eine Antwort zu akzeptieren, klicken Sie auf den Haken unter der Nummer – jeb

0

Sie können es mit einer Batch-Datei tun WMIC wie folgt aus:

@echo off 
wmic logicaldisk get caption,providername,drivetype,volumename > ListDisk.txt 
Start "" ListDisk.txt 
pause 

Und wenn Sie die Festplatte wie das Echo:

@echo off 
for /f "tokens=2" %%i in ('wmic logicaldisk where "drivetype=3" ^|find /i ":"') do (Set FixedDrive=%%i) 
echo %FixedDrive% 
pause 
+0

Dieses Skript muss unter laufen Windows PE, daher glaube ich nicht, dass die WMIc-API auf dieser Plattform verfügbar ist. Ich habe versucht, es für ein anderes Problem zu verwenden, und WMIC wurde nicht gefunden. –

Verwandte Themen