hanheik
Goto Top

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?

Content-Key: 374666

Url: https://administrator.de/contentid/374666

Printed on: April 20, 2024 at 09:04 o'clock

Mitglied: 136166
136166 May 22, 2018 updated at 10:50:48 (UTC)
Goto Top
:start
if exist "H:" (  
  rem copy something
) else (
  rem do something else
)
pause
goto start
Member: AMD9558
AMD9558 May 22, 2018 updated at 10:53:33 (UTC)
Goto Top
Hi,

vielleicht hilft dir dieser Beitrag weiter.

VG

Yannik
Member: SeaStorm
SeaStorm May 22, 2018 updated at 11:33:30 (UTC)
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