Was ist der Laufwerksbuchstabe von Usb-Sticks?
Hallo Leute,
Ich arbeite gerade an einer Batch. Diese soll den Usb- stick anwählen und von dem stick bzw auf den stick dateien kopieren. Dies soll aber auch an anderen Pcs funktionieren... Deshalb meine Frage: Wie wähle ich immer meinen Usb Stick aus, denn das Laufwerk und dadurch der Buchstabe ist ja bei den Pcs verschieden. Gibt es da auch so eine Kurzform wie beim Benutzer %userprofile% ?
3 Antworten
Im einfachsten Fall startest Du Deine Batch ohnehin vom Stick. dann ist der inhalt der Parametervariable %~d0 immer der von dem Laufwerk, wo sie gestartet wird.
Die Abfrage ob und welcher USB-Stick überhaupt eingesteckt ist geht nur über das WMI
wmic volume
mit etwas Filterei und einem gesetzten Volume-Label ist die Aufgabe einfach:
demo.cmd
@echo off
setlocal enableDelayedExpansion
rem hier dein gesuchtes Label (selbst vergebener Laufwerksname) angeben (ESD-USB ist Mein Stick da must du einen eigenen Namen einsetzen.)
set "meinLabel=ESD-USB"
rem drivetype 2=USB-Stick 3=Harddrive 5=OpticalDrive
rem nur Type 2 laufwerkbuchstabe und Label Abfragen
for /f "usebackq skip=2 tokens=* delims=" %%a in (`wmic volume where Drivetype^=2 get DriveLetter^,Label^,SystemVolume /format:csv`) do (
rem leere Felder (,,) im csv durch ,n/a, ersetzen, sonst kommt die Auswertung durcheinander!
set "dummy=%%a"
set "dummy=!dummy:,,=,n/a,!"
for /f "tokens=2,3 delims=:," %%b in ("!dummy!") do (
set "Label.%%b=%%~c"
)
)
echo:
echo erzeugte variablen und deren Inhalt...
set label.
for %%a in (A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z) do (
if /i "!Label.%%a!"=="%meinLabel%" (
echo dein Stick ist in Laufwerk %%a ...
)
)
pause
Befindet sich deine Batch Datei auf dem USB Stick, expandiert
%~d0
zum Laufwerksbuchstaben, siehe:
https://www.computerhope.com/forhlp.htm
https://htipe.wordpress.com/2008/10/09/the-dp0-variable/
Ansonsten könntest du den Laufwerksbuchstaben mit Hilfe von wmic herausfinden:
http://support.moonpoint.com/os/windows/commands/wmic/logicaldisk.php
Nein. Du musst die Windows Registry oder den WMI Dienst von Windows abfragen um eingesteckte USB Sticks und deren Laufwerksbuchstaben zu ermitteln. Frameworks .NET ist dein Freund.
Mit ner DOS-Batch kommst du nicht weit, ggfls. mit einer Perl-Extension. Oder Powershell.
Mit ner DOS-Batch kommst du nicht weit
kleiner Pessimist...😏
Generell kann kann man mit Batch so ziemlich alles tun, man muss nur wissen wie...🥱