如何在没有临时文件的批处理变量中捕获管道的结果?



试图在不使用临时文件的情况下使用diskpart获取系统中的磁盘数量。这可以在命令行上运行:

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

但是我不知道如何将结果重定向到批处理变量。当然,由于标签的原因,上述管道打印的数字更高,但它们是常数(将结果除以3为实际磁盘数量)。

任何想法?

我试过:

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

您需要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!

您可以使用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

最新更新