captainchaos666
Goto Top

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

Content-ID: 95810

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

Ausgedruckt am: 22.11.2024 um 10:11 Uhr

Biber
Biber 01.09.2008 um 15:20:03 Uhr
Goto Top
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:
for /f %i in ('fsutil fsinfo drives^|more +2') do @echo %i  
[CMD-Prompt-Version; im Batch die %-Zeichen verdoppeln]

Grüße
Biber
AndreasHoster
AndreasHoster 01.09.2008 um 16:00:12 Uhr
Goto Top
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).
captainchaos666
captainchaos666 01.09.2008 um 16:09:30 Uhr
Goto Top
Hallo Biber
danke für deine Antwort, habs ausprobiert bekomme aber nichts sinnvolles. Was ich bekomme:
drivers
drivertyp
volumeinfo
ntfsinfo
statistics

kannst du mir den Syntax erklären, ich versteh nicht was dort passieren soll!

Dank Dir, Gruß

Alex
Biber
Biber 01.09.2008 um 20:35:57 Uhr
Goto Top
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 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
paulepank
paulepank 02.09.2008 um 00:32:45 Uhr
Goto Top
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.face-smile

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
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
bastla
bastla 02.09.2008 um 13:36:45 Uhr
Goto Top
Hallo @all!

lass uns lieber einen bastla'schen Anderthalbzeiler in VBS dafür nehmen.
Etwas verspätet, aber dafür mit ein paar Zeilen mehr face-wink:
@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:
Grüße
bastla
captainchaos666
captainchaos666 02.09.2008 um 14:34:35 Uhr
Goto Top
Hallo an Alle,
das OS was ich verwende ist DOS 6.22. Ich möchte die Partitionen einzeln sichern, da ich später beim Ausfall einer Festplatte nicht alle Partitionen benötige, sondern nur die auf der sich das Projekt findet. Sichern möchte ich aber alle Partitionen die es gibt, da der Anwender nicht weiß welche Partition gesichert werden muss

Ich habe inzwischen aber festgestellt dass dies gar nicht geht in DOS, da es NTFS LW sind erkennt DOS diese gar nicht, somit geht die Abfrage mit If Exist C:\ ins leere. Ich habe es erst unter XP getestet dort funktionierte es einwandfrei.

Hab jetzt vier Batchbefehle in die Autoexec.bat geschrieben mit der die ersten vier Partitionen gesichert werden. Sollte es eine Fehlermeldung geben wenn es diese Partition nicht gibt, so wird diese einfavh ignoriert.

Somit hat sich das ganze glaub ich erledigt. Ich Dank euch nochmals für eurer Unterstützung
prittstift69
prittstift69 25.11.2009 um 12:44:41 Uhr
Goto Top
wmic (Windows Management Instrumentation command-line)
funktioniert nur mit Administrator Rechten
bastla
bastla 25.11.2009 um 17:56:25 Uhr
Goto Top
@prittstift69
Bleibt nur zu hoffen, dass diese Information noch rechtzeitig kommt ... face-wink

Grüße
bastla