hanheik

DOS-Befehl für Abfrage, ob Datenträger eingelegt?

Hallo,

ich muss mal wieder USB-Sticks kopieren. Gibt es einen DOS-Befehl, der prüft, ob ein Laufwerk verfügbar ist?
Ich kopiere und prüfe mittels einer Batch-Datei, die auf Tastendruck immer wieder neu loslegt. Ideal wäre ein Befehl, der prüft, ob der Stick (z.B.: Laufwerk H: ) verfügbar ist und wenn ja, mit dem Kopieren usw. anfängt.
Gibt es da was?
Auf Facebook teilen
Auf X (Twitter) teilen
Auf Reddit teilen
Auf Linkedin teilen

Content-ID: 374666

Url: https://administrator.de/forum/dos-befehl-fuer-abfrage-ob-datentraeger-eingelegt-374666.html

Ausgedruckt am: 16.05.2025 um 13:05 Uhr

136166
136166 22.05.2018 aktualisiert um 12:50:48 Uhr
Goto Top
:start
if exist "H:" (  
  rem copy something
) else (
  rem do something else
)
pause
goto start
AMD9558
AMD9558 22.05.2018 aktualisiert um 12:53:33 Uhr
Goto Top
Hi,

vielleicht hilft dir dieser Beitrag weiter.

VG

Yannik
SeaStorm
SeaStorm 22.05.2018 aktualisiert um 13:33:30 Uhr
Goto Top
Hi
habe mir vor ner Weile mal was ähnliches im Powershell gebastelt(Das eigentliche Script war von irgendeiner anderen Seite), um das Einstecken eines USB Sticks mit einem bestimmten Label zu erkennen und dann einen Source-Ordner da drauf zu kopieren.
Habs nur nie geschafft das zu parallelisieren, so das man mehrere Sticks gleichzeitig bespielen kann.

Evtl. hilfts dir ja. Parameter musst du natürlich anpassen

Einfach in die ISE kopieren und starten. Wenn du einen Stick einsteckst, gehts los

Register-WmiEvent -Class win32_VolumeChangeEvent -SourceIdentifier volumeChange
write-host (get-date -format s) " Beginning script..."  
do{
$newEvent = Wait-Event -SourceIdentifier volumeChange
$eventType = $newEvent.SourceEventArgs.NewEvent.EventType
$eventTypeName = switch($eventType)
{
1 {"Configuration changed"}  
2 {"Device arrival"}  
3 {"Device removal"}  
4 {"docking"}  
}
write-host (get-date -format s) " Event detected = " $eventTypeName  
if ($eventType -eq 2)
{
$driveLetter = $newEvent.SourceEventArgs.NewEvent.DriveName
$driveLabel = ([wmi]"Win32_LogicalDisk='$driveLetter'").VolumeName  
write-host (get-date -format s) " Drive name = " $driveLetter  
write-host (get-date -format s) " Drive label = " $driveLabel  
# Execute process if drive matches specified condition(s)
if ($driveLabel -eq 'VOLUME')  
{
    #check if drive is empty
    if (-not (Test-Path "$driveLetter\Setup\")) {  
        write-host (get-date -format s) " Starting task in 2 seconds..."  
        start-sleep -seconds 2
        #copy content
        Copy-Item -Path "C:\Source\*" -Destination "$driveLetter\" -Force -Recurse | Out-Null  
        write-host (get-date -format s) " Task finished !"  
    }
}
}
Remove-Event -SourceIdentifier volumeChange
} while (1-eq1) #Loop until next event
Unregister-Event -SourceIdentifier volumeChange