透過批量編程根據卷標獲取磁碟卷號

透過批量編程根據卷標獲取磁碟卷號

我想建立一個腳本,透過僅指定卷標來自動在 Windows 中安裝磁碟機。這個想法是提供標籤並獲取卷號並透過腳本將其用於 diskpart。

使用 ChatGPT 我能夠取得一些進展,但不能說我能夠完全遵循,因為我在批次程式設計方面沒有太多經驗。也有可能答案並不是最好的。

ChatGPT 建議:

@echo off
for /f "tokens=1" %%i in ('wmic logicaldisk where "DriveType=3" get VolumeName /value') do (
  set disklabel=%%i
  echo Found disk label: %disklabel%
  diskpart /s script.txt
)

腳本(單獨的檔案)是

select volume <disk label>
assign letter=<drive letter>

假設驅動器的標籤是“Super Drive”,如何才能透過雙擊bat檔案使其工作?順便說一句,我知道 diskpart 需要一個單獨的腳本來自動化它(script.txt),但我不知道如何寫

<disk label> 
<disk letter>

謝謝。

答案1

@echo off && Setlocal EnableDelayedExpansion

for /f tokens^=4delims^=^>^< %%i in =;('
     wmic.exe logicaldisk where "DriveType=3" get VolumeName^,Caption /format:xml ^| find "/VALUE"
   ')do if "!_Caption!" == "" (set "_Caption=%%~i")else set "_DiskLabel=%%~i" && echo\ Found: !_DiskLabel!

if /i "Super Drive" == "!_DiskLabel!" >"%temp%\%~n0.txt" =;(
      echo\ Select volume !_DiskLabel! 
      echo\ Assign letter=!_Caption! 
     );=

findstr "S A" <"%temp%\%~n0.txt" && 2>nul =;(
     diskpart.exe /s "%temp%\%~n0.txt"
     timeout 3 | del "%temp%\%~n0.txt" 
    );= 

endlocal

相關內容