Abrufen der Datenträgernummer anhand der Datenträgerbezeichnung durch Batch-Programmierung

Abrufen der Datenträgernummer anhand der Datenträgerbezeichnung durch Batch-Programmierung

Ich möchte ein Skript erstellen, um ein Laufwerk in Windows automatisch zu mounten, indem nur die Datenträgerbezeichnung angegeben wird. Die Idee besteht darin, die Bezeichnung anzugeben, die Datenträgernummer zurückzuerhalten und sie über ein Skript in Diskpart zu verwenden.

Mit ChatGPT bin ich weitergekommen, kann aber nicht behaupten, dass ich alles richtig nachvollziehen konnte, da ich nicht viel Erfahrung mit Batch-Programmierung habe. Es könnte auch sein, dass die Antwort nicht die beste war.

ChatGPT hat vorgeschlagen:

@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
)

Und das Skript (separate Datei) war

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

Angenommen, "Super Drive" ist die Bezeichnung des Laufwerks. Wie kann ich es durch Doppelklicken auf die Bat-Datei zum Laufen bringen? Ich weiß übrigens, dass Diskpart ein separates Skript zur Automatisierung benötigt (script.txt), aber ich bin nicht sicher, wie ich es schreiben soll.

<disk label> 
<disk letter>

Danke schön.

Antwort1

@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

verwandte Informationen