2016-07-02 23 views
2

嘗試使用diskpart獲取系統中的磁盤數量而不使用臨時文件。這在命令行上工作:如何在沒有臨時文件的批處理文件中捕獲管道結果?

echo list disk | diskpart | find /C "Disk" 

但我不知道如何將結果重定向到批量var。當然,上述流水線打印的數字由於標籤而較高,但是它們是恆定的(實際磁盤數除以3得到的結果)。

任何想法?

我已經試過:

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

回答

0

你需要FOR F捕獲程序的輸出。

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

除了在集合中,這是完美的!我在這裏比較新,所以如何接受這個答案,還是我想到其他類似的形式? –

+0

引號是完全放置的,也就是'set'命令的擴展語法,以避免尾隨空格並使用特殊字符 – jeb

+0

@motechman要接受答案,請單擊編號 – jeb

0

您可以使用WMIC這樣一個批處理文件做到這一點:

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

如果你想呼應的固定驅動器那樣:

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

下的鉤子。此腳本需要在Windows PE,所以我不認爲WMIc API在該平臺上可用。我試圖用它來解決另一個問題,而wmic沒有找到。 –

相關問題