如何在脚本中正确获取已安装 VHD 的驱动器号。可能吗?
list volume
select volume <volume_number_of_attached_VHD>
assign letter=v
exit
在脚本的这一部分,需要指定卷的数量,该数量可能会随时变化。
另外,如果可以的话,我有一个想法,在早期阶段为该虚拟卷添加一些标签,然后在后期确定使用该标签搜索驱动器的卷数。这个想法可以实现吗?
谢谢。
答案1
万一您仍然关心,我想将这个问题发布到互联网上的某个地方,因为我刚刚弄清楚了这一点,并且之前还没有看到其他人回答过这个问题。
这将找到 DVD-ROM 并分配字母 v。
for /F "tokens=2" %%i in ('%comspec% /c echo list vol ^| diskpart ^| find "DVD-ROM"') do %comspec% /c echo select vol %%i ^& echo assign letter=v|diskpart
答案2
只是想理解并解释一下这个极客对我的问题的回答到底是怎么回事。
for ... in () do ... 是一个循环构造
/F 开关 - 循环遍历文本,标记=n - 指定从每行读取哪些编号项(默认值=1)为了简单起见:取原始字符串的第 n 列,用分隔符分隔(默认情况下为空格符号)
有关 /F 的更多信息: https://ss64.com/nt/for_f.html
%comspec% - 如果我没记错的话,它只是命令行解释器的名称 - 大多数情况下是“cmd”
我怀疑 ^| 和 ^& - 是一种管道……或者在 Linux 中与 || 和 && 对应的后续执行。如果我错了,请纠正我……
抱歉,手边没有窗户,没有机会检查,但提前接受答案,因为其他成员认为它很有用。
答案3
鉴于这个问题的年龄,(现在)强烈建议使用电源外壳执行这些操作。
但由于 OP 坚持使用 CMD,因此您必须从 CMD 运行对 Powershell 的适当调用。
做法是:
PowerShell -Command "(Get-DiskImage -ImagePath "C:\VHD\xxx.vhdx" | Get-Disk | Get-Partition | Get-Volume).DriveLetter"
对于 WSL 友好版本,请将 替换为\
。\\
并记住将 包含powershell.exe
在您的 PATH 中。