Batch file 批处理:列出可用硬盘驱动器并使用所选选项

Batch file 批处理:列出可用硬盘驱动器并使用所选选项,batch-file,cmd,volume,wmic,Batch File,Cmd,Volume,Wmic,我想在批处理脚本中列出所有可用的可移动硬盘,并继续使用所选选项。我知道有这样的选择 wmic logicaldisk get caption,volumename 列出硬盘驱动器和 SET /P M=Type 1 or 2 then press ENTER: IF %M%==1 GOTO One IF %M%==2 GOTO Two 创建一个菜单。但是如何将卷存储在变量中并在菜单中列出它们呢 比如: Choose from list: 1) D:\Harddrivename1 2) E:\

我想在批处理脚本中列出所有可用的可移动硬盘,并继续使用所选选项。我知道有这样的选择

wmic logicaldisk get caption,volumename
列出硬盘驱动器和

SET /P M=Type 1 or 2 then press ENTER:
IF %M%==1 GOTO One
IF %M%==2 GOTO Two
创建一个菜单。但是如何将卷存储在变量中并在菜单中列出它们呢

比如:

Choose from list:

1) D:\Harddrivename1
2) E:\Harddrivename2

Enter option: 2

感谢您的帮助

这里有一个函数,可以让您创建非类型3(固定)的驱动器阵列:

rem//填充arrayname、arrayname.length和arrayname.ubound

:getRemovableDrives,Ctrl+F并在页面上查找DriveType。

这可能会帮助您开始。它在地狱里。它获取所有可移动(非软盘)驱动器的列表,并提供一个列表供用户选择。如果只有一个驱动器,则不显示菜单

还有很多事情要做。对用户的输入没有范围或错误检查。当然,它并没有说明你想用这个驱动器做什么

$drivelist = @(Get-WMIObject Win32_LogicalDisk -Filter "MediaType = 11")

if ($drivelist.Count -eq 0) { Write-Host 'There are no removable drives.'
} elseif ($drivelist.Count -eq 1) { $thedrive = $drivelist[0]
} else {
    Write-Host 'Removable drives'
    $i = 1
    foreach ($drive in $drivelist) {
        Write-Host $('{0}. {1} {2}' -f $i, $drive.DeviceId, $drive.VolumeName)
        $i += 1
    }

    $dn = Read-Host -Prompt 'Enter the drive number.'
    $thedrive = $drivelist[$dn - 1]
}

# At this point, $thedrive is a System.Management.ManagementObject#root\cimv2\Win32_LogicalDisk
# ready to be used for something.

$thedrive | Format-List * -Force

可移动硬盘、USB驱动器、固定驱动器等。您如何确定哪个是哪个?你需要研究你需要的方法,然后将其添加到脚本中。根据你对rojo答案的评论,你能确认你只寻找USB驱动器吗?您还可以解释一下,一旦驱动器被“菜单选择”,您需要做什么吗?谢谢您的快速回复!不知道为什么,但您提供的脚本在测试后立即退出。。使用wmic logicaldisk get deviceid、volumename、description进行测试时,外部驱动器显示为type3@max07如果您
wmic logicaldisk get/value
,您是否看到可以用来区分可移动驱动器和固定驱动器的任何属性?也许是lit建议的
MediaType=11
?对不起,我现在没有带任何可移动硬盘进行测试。我只是注意到,只有我的笔记本电脑无法识别外部硬盘。我的工作站有,脚本在这里工作。但在两台电脑上,MediaType都显示为12。