iwan
Goto Top

per Batch prüfen ob Laufwerk eine HDD ist

hallo zusammen,

für ein Backup-Script per Batch suche ich eine Möglichkeit zu prüfen, ob Laufwerk D: eine Festplatte ist.
ich habe schon überlegt, ob ich Ordner abfragen kann, z.B. den Papierkorb oder MSO-Cache, aber das erscheint mir zu unsicher
hat jemand eine bessere Idee, wie ich das realisieren kann?

Content-ID: 97132

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

Ausgedruckt am: 08.11.2024 um 07:11 Uhr

bastla
bastla 17.09.2008 um 09:55:03 Uhr
Goto Top
Hallo Iwan!

Wenn es keine Einwände gegen den Einsatz von VBScript gibt, etwa so:
@echo off & setlocal
set LW=D:

set G=%temp%\GetDriveType.vbs
>%G% echo On Error Resume Next:WScript.Echo CreateObject("Scripting.FileSystemObject").GetDrive(WScript.Arguments(0)).DriveType  
set DT=
for /f %%i in ('cscript //nologo %G% %LW%') do set "DT=%%i"  
if "%DT%"=="2" echo Festplatte  
Mögliche Rückgabewerte:
0: Unbekannt
1: Austauschbar
2: Fest
3: Netzwerk
4: CD-ROM
5: RAM-Laufwerk
Grüße
bastla

[Edit] "On Error Resume Next" hinzugefügt, um "Drive not ready" abzufangen; zur Sicherheit noch das Löschen der Variable %DT% ergänzt[/Edit]
Iwan
Iwan 17.09.2008 um 10:15:21 Uhr
Goto Top
hallo und danke für den Tip, aber wenn ich VBS haben wollte, dann hätte ich nicht nach Batch gefragt, oder? face-wink

ich bin gerade dabei, ob ich über den Volume-Namen oder die freie Kapaziät rankomme
eine CD oder DVD hat schliesslich keinen freien Platz, aber u.U. könnte das Laufwerk ja auch ein Netzlaufwerk sein und somit würde das nicht greifen
sieht recht problematisch aus...


+nachtrag+
fsutil fsinfo drivetype d: liefert als Ergebnis z.B.
d: - CD-ROM-Laufwerk oder halt d: - Eingebautes Laufwerk

wie kann ich nun daraus eine Abfrage machen?
if (Ergebnis von fsutil fsinfo drivetype d: ) = "Eingebautes Laufwerk" then MacheDiesUndDas
bastla
bastla 17.09.2008 um 11:55:50 Uhr
Goto Top
Hallo Iwan!

... aber wenn ich VBS haben wollte, dann hätte ich nicht nach Batch gefragt, oder? face-wink
Eigentlich hast Du ja Batch bekommen ... face-wink
Soferne Du Dich auf die Ausgabe "Eingebautes Laufwerk" verlassen kannst und willst:
fsutil fsinfo drivetype d:|findstr /c:"Eingebautes Laufwerk">nul && goto :MacheDiesUndDas  
echo Keine Festplatte
goto :eof

:MacheDiesUndDas
...
Grüße
bastla
Iwan
Iwan 17.09.2008 um 12:00:41 Uhr
Goto Top
danke, werde ich testen und ja, Laufwerk D: ist in 99,99% der Fälle eine 2. Partition oder ein CD-/DVD-Laufwerk
bastla
bastla 17.09.2008 um 12:13:12 Uhr
Goto Top
Hallo Iwan!

Ich hatte dabei nicht an den Typ des Laufwerks, sondern an das Betriebssystem (bzw dessen Sprache), unter welchem der Batch laufen soll gedacht (W2000 kennt zB "fsutil" gar nicht, Vista müsstest Du selbst testen) ...

Grüße
bastla
Iwan
Iwan 17.09.2008 um 12:25:39 Uhr
Goto Top
ach so, das OS ist immer das gleiche, aber das mit der Sprache bin ich noch am testen, da wir XP Prof in deutsch und englisch einsetzen
im CMD-Prompt steht auf dem englischen Client (dank deutscher MUI?) auch "Eingebautes Laufwerk" da
bin mal gespannt, was er dann in der Batch nimmt...

+nachtrag+
super, funktioniert auch auf einem englischen Windows mit deutschem MUI einwandfrei, danke nochmal face-smile