Partitionen abfragen über Batchdatei
Hallo an Alle,
sollte mal wieder eure Hilfe haben.
Mit If Exist: C:\ goto Sprung kann ich abfragen ob es eine Partition C: gibt. Wenn ich mehrer Partitionen habe muss ich immer mit If testen od es diese gibt oder nicht. Um dies zu umgehen würde ich gerne abfragen wie viele Partitionen es gibt
Grund: Ich möchte über Symantec Ghost jede einzelne vorhandene Partition sichern. Hierzu muss ich aber wissen wie viele Partitionen die Platte hat
Noch eine Verständnisfrage: Wenn ich eine Festplatte mit vier Partitionen habe kann ich diese dann mit C:\, D:\, E:\ und F:\ ansprechen oder kann es vorkommen, dass die Buchstaben nicht alphabetisch kommen
Gruß Alex
sollte mal wieder eure Hilfe haben.
Mit If Exist: C:\ goto Sprung kann ich abfragen ob es eine Partition C: gibt. Wenn ich mehrer Partitionen habe muss ich immer mit If testen od es diese gibt oder nicht. Um dies zu umgehen würde ich gerne abfragen wie viele Partitionen es gibt
Grund: Ich möchte über Symantec Ghost jede einzelne vorhandene Partition sichern. Hierzu muss ich aber wissen wie viele Partitionen die Platte hat
Noch eine Verständnisfrage: Wenn ich eine Festplatte mit vier Partitionen habe kann ich diese dann mit C:\, D:\, E:\ und F:\ ansprechen oder kann es vorkommen, dass die Buchstaben nicht alphabetisch kommen
Gruß Alex
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 95810
Url: https://administrator.de/contentid/95810
Ausgedruckt am: 22.11.2024 um 10:11 Uhr
9 Kommentare
Neuester Kommentar
Moin captainchaos66,
unter der Annahmne, dass Du als gesichert annehmen kannst, dass ein Laufwerk "C:" als erstes Laufwerk vorhanden ist, kannst Du alle danach folgenden (lokal vorhandenen ) Laufwerksbuchstaben mit folgender FOR/F-Anweisung anlisten lassen:
[CMD-Prompt-Version; im Batch die %-Zeichen verdoppeln]
Grüße
Biber
unter der Annahmne, dass Du als gesichert annehmen kannst, dass ein Laufwerk "C:" als erstes Laufwerk vorhanden ist, kannst Du alle danach folgenden (lokal vorhandenen ) Laufwerksbuchstaben mit folgender FOR/F-Anweisung anlisten lassen:
for /f %i in ('fsutil fsinfo drives^|more +2') do @echo %i
Grüße
Biber
Unter DOS kommen die Partitionen alphabetisch, falls es unterstützte Dateisysteme sind, nicht unterstützte bekommen gar keinen Buchstaben, unter Windows können die auch Lücken haben bzw. gar keinen Laufwerksbuchstaben. Kann man ja in der Windows Datenträgerverwaltung beliebig verändern (außer der System und Boot Partition).
Moin captain,
sorry, ich wollte wollte es erst noch unter Vi$ta testen, bevor ich meine Antwort schreibe.
Jetzt die gute Nachricht zuerst:
Unter XP ist der Output aber buggy...
In der FOR/F-Anweisung werden die Laufwerke ab dem 2. vorhandenen als "neue Zeilen" interpretiert -> output wird verstümmelt dargestellt. Deshalb dieser hässliche Workaround oben.
Falls Du mit Vi$ta rumspielst, kannst Du auf dieses wacklige Konstrukt aus dem ersten Kommentar verzichten.
Und falls Du etwas für XP brauchst, dann lass uns lieber einen bastla'schen Anderthalbzeiler in VBS dafür nehmen.
Grüße
Biber
sorry, ich wollte wollte es erst noch unter Vi$ta testen, bevor ich meine Antwort schreibe.
Jetzt die gute Nachricht zuerst:
- unter XP Pro (mein Versuch oben) und auch unter Vi$ta liefert ein
>fsutil fsinfo drives
Laufwerke: C:\ D:\ E:\ F:\
- Noch besser: Unter Vi$ta klappt ein unverkramptes SET
(=20:16:10 d:\temp=)
>for /f "tokens=1,*" %i in ('fsutil fsinfo drives') do @echo set "localdrives=%j"
set "localdrives=B:\ C:\ D:\ E:\ F:\ "
Unter XP ist der Output aber buggy...
In der FOR/F-Anweisung werden die Laufwerke ab dem 2. vorhandenen als "neue Zeilen" interpretiert -> output wird verstümmelt dargestellt. Deshalb dieser hässliche Workaround oben.
Falls Du mit Vi$ta rumspielst, kannst Du auf dieses wacklige Konstrukt aus dem ersten Kommentar verzichten.
Und falls Du etwas für XP brauchst, dann lass uns lieber einen bastla'schen Anderthalbzeiler in VBS dafür nehmen.
Grüße
Biber
N,Abend in die Runde,
um an Andreas anzuknüpfen:
zum einen wäre interessant unter welchem OS die Batch laufen soll (offensichtlich nicht unter DOS - bei mir Ghost nur unter DOS/Win98)
zum anderen ist der Ansatz m.E. falsch, da bei Bibers Code mit Fsutil auch u.a. CD_Laufwerke angezeigt werden. Und die will er ja bestimmt nicht sichern, zumal ja nicht einmal gesichert ist, daß eine Scheibe drin liegt.
Nebenbei stellt sich die Frage: Wenn alle Partitionen gesichert werden sollen, warum dann nicht gleich die ganze Platte ?
Mein Ansatz wäre:
Das ergibt z.B.:
Die erste Zeile wie üblich mit Skip in der For-Anweisung überspringen, 2.Token auswerten und 1.Token übernehmen.
Würde z.B. unter XP Prof und unter Vista Premium laufen.
Zu einer vollständigen Lösung bin ich nicht bereit, denn mein Bier ist alle.
Damit gebe ich den Token zurück an Biber oder den Treadersteller.
cu paulepank
um an Andreas anzuknüpfen:
zum einen wäre interessant unter welchem OS die Batch laufen soll (offensichtlich nicht unter DOS - bei mir Ghost nur unter DOS/Win98)
zum anderen ist der Ansatz m.E. falsch, da bei Bibers Code mit Fsutil auch u.a. CD_Laufwerke angezeigt werden. Und die will er ja bestimmt nicht sichern, zumal ja nicht einmal gesichert ist, daß eine Scheibe drin liegt.
Nebenbei stellt sich die Frage: Wenn alle Partitionen gesichert werden sollen, warum dann nicht gleich die ganze Platte ?
Mein Ansatz wäre:
wmic logicaldisk get caption,description
Das ergibt z.B.:
Caption Description
C: Lokale Festplatte
D: Lokale Festplatte
E: Lokale Festplatte
F: CD
G: CD
Z: CD
Würde z.B. unter XP Prof und unter Vista Premium laufen.
Zu einer vollständigen Lösung bin ich nicht bereit, denn mein Bier ist alle.
Damit gebe ich den Token zurück an Biber oder den Treadersteller.
cu paulepank
Hallo @all!
Grüße
bastla
lass uns lieber einen bastla'schen Anderthalbzeiler in VBS dafür nehmen.
Etwas verspätet, aber dafür mit ein paar Zeilen mehr :@echo off & setlocal
set G=%temp%\GetLocalDrives.vbs
>%G% echo For Each d In CreateObject("Scripting.FileSystemObject").Drives:If d.DriveType=2 Then L=L^&d.DriveLetter^&" ":End If:Next:WScript.Echo L
for /f "delims=" %%i in ('cscript //nologo %G%') do set "Localdrives=%%i"
for %%i in (%Localdrives%) do echo Sichere LW %%i:
bastla