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-Key: 95810

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

Printed on: April 27, 2024 at 04:04 o'clock

Member: Biber
Biber Sep 01, 2008 at 13:20:03 (UTC)
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
Member: AndreasHoster
AndreasHoster Sep 01, 2008 at 14:00:12 (UTC)
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).
Member: captainchaos666
captainchaos666 Sep 01, 2008 at 14:09:30 (UTC)
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
Member: Biber
Biber Sep 01, 2008 at 18:35:57 (UTC)
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
Member: paulepank
paulepank Sep 01, 2008 at 22:32:45 (UTC)
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
Member: bastla
bastla Sep 02, 2008 at 11:36:45 (UTC)
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
Member: captainchaos666
captainchaos666 Sep 02, 2008 at 12:34:35 (UTC)
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
Member: prittstift69
prittstift69 Nov 25, 2009 at 11:44:41 (UTC)
Goto Top
wmic (Windows Management Instrumentation command-line)
funktioniert nur mit Administrator Rechten
Member: bastla
bastla Nov 25, 2009 at 16:56:25 (UTC)
Goto Top
@prittstift69
Bleibt nur zu hoffen, dass diese Information noch rechtzeitig kommt ... face-wink

Grüße
bastla