将批处理文件中的环境变量转换为电源外壳



我在将批处理转换为电源外壳时被困在下面的代码片段中:

批处理文件:

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] }
}

最新更新