我在将批处理转换为电源外壳时被困在下面的代码片段中:
批处理文件:
echo list vol > Test.txt
for /f "tokens=2,3,4" %%i in ('diskpart /s Test.txt ^| findstr /r "Volume.[0-5]"') do (
if "%%j"=="SYSTEM" set A_DRV=%%i
if "%%k"=="SYSTEM" set B_DRV=%%i
if "%%k"=="Test1" set C_DRV=%%i
if "%%k"=="User" set D_DRV=%%i
if "%%k"=="Test2" set E_DRV=%%i
它列出了磁盘卷,存储在测试.txt中。然后是一个循环来分配驱动器号名称
我尝试了下面的电源外壳代码段,但我无法设置正确的驱动器名称。
for ($i = 0; $i -lt $4 ; $i++)
{
Get-Volume |Outfile "C:Test.txt" -append -encoding UTF8
$u = diskpart /s "C:test.txt" |findstr /r `"Volume.[0-5]`" |Out-file "C:Test.txt" -append -encoding UTF8
if($i -eq 0)
{
Set-Volume -NewFileSystemLabel "A_DRV"
}
if($i -eq 1)
{
Set-Volume -NewFileSystemLabel "B_DRV"
}
if($i -eq 2)
{
Set-Volume -NewFileSystemLabel "C_DRV"
}
if($i -eq 3)
{
Set-Volume -NewFileSystemLabel "D_DRV"
}
if($i -eq 4)
{
Set-Volume -NewFileSystemLabel "E_DRV"
}
}
下面是一个版本的 .bat 文件,该文件根据标签将环境变量设置为卷号 (###(。 尽管第一个使用 Ltr 列。
Volume ### Ltr Label Fs Type Size Status Info
---------- --- ----------- ----- ---------- ------- --------- --------
Volume 0 C BOOTCAMP NTFS Partition 37 GB Healthy Boot
Volume 1 EFI FAT32 Partition 300 MB Healthy System
Volume 2 PortableBas NTFS Partition 8189 MB Healthy
'list vol' | diskpart | foreach {
$split = -split $_
if($split[2] -eq 'SYSTEM') { $env:A_DRV = $split[1] }
if($split[3] -eq 'SYSTEM') { $env:B_DRV = $split[1] }
if($split[3] -eq 'recovery') { $env:C_DRV = $split[1] }
if($split[3] -eq 'C_DRV') { $env:D_DRV = $split[1] }
if($split[3] -eq 'O_DRV') { $env:E_DRV = $split[1] }
}