[BATCH] CHKDSK ALL verbessern

cbtestarossa

Fleet Admiral
Registriert
Okt. 2011
Beiträge
10.400
Also hab mir was geschrieben um auf allen Laufwerken chkdsk /f auszuführen (mit event. Bestätigung von Abfragen mit Taste N für Nein)
Das Systemlaufwerk (WIN) wird ausgefiltert wegen Bestätigung des Dialoges mit Taste J für JA

Nun wäre nicht schlecht wenn ich irgendwie noch abfragen könnte ob ein Laufwerk zb L: ein Netzlaufwerk ist und ich das dann vom chkdsk ausschließen könnte.
jemand ne Idee?
 
Zuletzt bearbeitet:
Schau mal hier vorbei: http://code-bude.net/2013/02/23/alle-laufwerke-in-der-cmd-anzeigen/
Der nachfolgende Befehl gibt beispielsweiße nur Lokal Disks aus:
Code:
C:\Users\misterx>wmic logicaldisk where drivetype=3 get deviceid, volumename, description
Description        DeviceID  VolumeName
Lokale Festplatte  C:        name
Lokale Festplatte  Q:
 
Logicaldisk dürfte die Netzlauferke mit auflisten.

wmic volume get driveletter <- sollte klappen
 
hm wmic volume scheint unter XP nicht zu existieren

stell mir das halt in etwa so vor

if %%L = Netzlaufwerk ( echo überspringen )
if %%L = systemlaufwerk (echo j|chkdsk %%L /f)
if %%L = LokalesLaufwerk (echo n|chkdsk %%L /f)
 
Zuletzt bearbeitet:
Dann versuch das von LukS. Hatte den drivetype-filter übersehen. Sollte daher also auch funktionieren.
wmic logicaldisk where drivetype=3 get caption

if var==NetzLW ist da überflüssig, da Netzlaufwerke nicht mitgelistet werden.
Und im Gegensatz zu deiner A-Z Schleife, nicht vorhandene LWs auch nicht.

Ansonsten lege dir eine dummy-Datei auf dem Netzlaufwerk an und häng entsprechendes an diene for-schleife.

...do if not exist "%var%\dummy"
 
Zuletzt bearbeitet:
wmic logicaldisk where drivetype=3 get caption

listet mir die Laufwerksbuchstaben auf ja
aber wie kann ich dann einen Befehl für ein damit angezeigtes Laufwerk verbinden
 
Verstehe ich jetzt nicht. Mit (A: B: C: D: ...) kannst es ja auch. Statdessen nimmst Du eben (wmic logicaldisk...) und passt die Schleife entsprechend an.
 
genau das ist ja mein Problem
wie baue ich deinen Befehl ein und filtere die Laufwerksbuchstaben EINZELN heraus

bzw benötigt man dann überhaupt noch ne FOR schleife?
 
Netzlaufwerke werden in der Registry abgelegt, so könnte man z.B die netzlaufwerke abfragen:

reg query HKEY_CURRENT_USER\Network\a
IF %errorlevel%==0 goto next

Die Buchstaben könnte man alle durchgehen.
Errorlevel=0 -> reg schlüssel existiert ->netzlaufwerk
errorlevel=1 -> reg schlüssel existiert nicht -> kein netzlaufwerk
 
Beispiel:

for /f "skip=1" %%i in ('wmic logicaldisk where drivetype^=3 get caption') do @echo %%i
 
danke an alle für die tips, war sehr aufschlussreich

hab es dann mit

for /f "skip=1" %%i in ('wmic logicaldisk where drivetype^=3 get caption') do (
und mit
for /f "skip=1" %%i in ('wmic logicaldisk where drivetype^=2 get caption') do (
getestet

Lieferte zwar richtig die Buchstaben, nur leider gab es ein kleines Prob mit CHKDSK sobald er ein Laufwerk nicht sperren konnte.
Irgendwie verhaspelt sich dann ECHO N|chkdsk %%i beim nächsten Laufwerk und machte Blödsinn.
Schade, dachte es geht auch einfach per Batch
 
Zuletzt bearbeitet:
Zurück
Oben