Localizando a letra da unidade dos xvhd
ou vhd
montados mais recentemente
arquivo em lote? Como faço para descobrir qual letra de unidade foi atribuída usando o
prompt de comando?
Pipe the output of Get-DiskImage to Get-Volume or Get-Disk and Get-Partition:
For an ISO file:
GET-DISKIMAGE filename.iso | GET-VOLUME
For a VHD file:
GET-DISKIMAGE filename.vhd | GET-DISK | GET-PARTITION
Source
Exemplo
Com base no artigo que você forneceu, incorporei a lógica do PowerShell ao script de lote abaixo para incluir dinamicamente a letra da unidade usada para montar o arquivo VHD ou ISO, para que você possa usá-la como um nome de variável para CD o diretório para executar o seu comando implicitamente ou você pode usá-lo para definir explicitamente a letra da unidade para o que você precisa para os comandos que você vai usá-lo, etc.
Script
@ECHO OFF
SETLOCAL
SET DiskPartScript="%TEMP%DiskpartScript.txt"
ECHO SELECT VDISK FILE="%~1" > %DiskPartScript%
ECHO ATTACH VDISK >> %DiskPartScript%
DiskPart /s %DiskPartScript%
SET PowershellScript="%TEMP%\PowerShellScript.ps1"
:: -- Use below for VHD
ECHO GET-DISKIMAGE "%~1" | GET-DISK | GET-PARTITION | Select -ExpandProperty DriveLetter > "%PowershellScript%"
:: -- Use below for ISO
::ECHO GET-DISKIMAGE "%~1" | get-VOLUME | Select -ExpandProperty DriveLetter > "%PowershellScript%"
SET PowerShellDir=C:\Windows\System32\WindowsPowerShell\v1.0
CD /D "%PowerShellDir%"
FOR /F "DELIMS=" %%A IN ('Powershell -ExecutionPolicy Bypass -Command "& '%PowershellScript%'"') DO SET "DriveLetter=%%A"
CD /D "%DriveLetter%:\"
<Commands>
<Commands>
ENDLOCAL