sandrob
Goto Top

Batch Partitionsname abfragen

Hallo,

Ich schreibe gerade an einer umfassenden Batchdatei und suche nun eine simple Lösung für mein Proble,.
Ich will mir die Laufswerkbeschreibung (Volumename) usgeben lassen.
Erst habe ich probiert es über eine For schleife zu regeln die in jeder verfügbaren Partition eine txt erstellt und dann damit prüft ob di ePartition verhoanden ist und welchen namen sie hat. Aber dies funktionierte nicht wirklich gut.

Vorhin habe ich endeckt das man wenn man nur dir c angibt den Name der Parition erhält , witzigerweiße funktioniert das immer nur für Laufwerk C bei mir :D. Ich hoffe ihr könnt mir helfen.

Im übrigen geht es bei mir auch in Powershell aber es muss eisnchließlich nur in Batch laufen. Ich habe auch schon die dafür zugehörige WMI klasse gefunden aber wie gesagt ich kome nich tweiter.
Kommentar vom Moderator Biber am 16.11.2011 um 16:45:08 Uhr
Verschoben von "Ich glaube, es ist Windows" nach "Batch & Shell"

Content-ID: 176349

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

Ausgedruckt am: 22.11.2024 um 16:11 Uhr

Skyemugen
Skyemugen 16.11.2011 um 16:29:31 Uhr
Goto Top
Aloha,

hm ich bekomme auch die Partitionsnamen von E: G: etc. angezeigt, sofern diese nicht als Netzlaufwerk mounted sind ... (Win XP x86)

greetz André
sandrob
sandrob 16.11.2011 um 16:44:10 Uhr
Goto Top
Grüße,

So ich bin der Lösung gerade ein stück näher gekommen,
man muss dafür in die andere Partition gehen und sich das selbe anzeigen lassen mit dir: z.b

C:\dir c

Ausgabe: Volume in Laufwerk C: System
danach mach man einfach

C:\d:
man kommt in D^^
D:\dir d
Die ausgabe ist wie oben ähnlich:
Volume in laufwerk D Daten


Nun brauch ich abe rncoh ein Script was das für mich tut udn mir damit den Namen heruasfiltert

gruß Sandro
Skyemugen
Skyemugen 16.11.2011 um 16:51:03 Uhr
Goto Top
... nutze mal Doppelpunkte, du wirst überrascht sein, dass du gar nicht wechseln musst :P

Namen herausfiltern geht fix:
@for /f "tokens=6" %i in ('dir d:') do @echo %i
mal so als schnelles prompt-Beispiel (sollte man eventuell anpassen, wenn noch andere Treffer in den sechsten-Token-Bereich kommen)

greetz André
Biber
Biber 16.11.2011 um 17:02:57 Uhr
Goto Top
Moin sandrob,

ergänzend zu Skyes Hinweisen und damit sich dieser Beitrag nicht unnötig lange hinzieht....

Kurze Demo am CMD-Prompt
[weil es neulich Missverständnisse gab: es ist EIN Befehl und der beginnt mit "FOR %a" und endet mit "^>%j" ]
d:\temp>FOR %a IN ( b c d e f g h y ) DO @FOR /F "tokens=5,*" %i IN ('dir %a: ^2^>nul ^|findstr /i /C:"%a: "') DO @echo %a ---^> %j
b ---> keine Bezeichnung.
c ---> SYSTEM
d ---> DATA
g ---> keine Bezeichnung.
h ---> HARDCORE
y ---> keine Bezeichnung.

Grüße
Biber
sandrob
sandrob 16.11.2011 um 17:37:55 Uhr
Goto Top
Hey Biber,

Ich bekomme das gerade nicht in der .bat zum laufen das da die ausgabe kommt und nicht abricht.

@echo off

FOR %a IN ( b c d e f g h y ) DO @for /F "tokens=5,*" %i IN ('dir %a: ^2^>nul ^|findstr /i /C:"%a: "') DO @echo %a ---^> %j

pause


Sonst hätte sich soweit das Problem geklärt face-smile

gruß Sandro
Biber
Biber 16.11.2011 um 19:01:29 Uhr
Goto Top
Moin Sandro,

ich hatte am CMD-Prompt rumgealbert - dort funktionieren die Laufvariablen mit einem Prozentzeichen (also als %a, ...%i, %j ).

In einem Batch müssen vor Laufvariablen jeweils deren zwei angegeben werden (also %%a, ...%%i, %%j ).

Und wenn du ein explizites "@echo off " deinem Batch vorangestellt hast, dann benötigst du auch keine weiteren "@"-Zeichen.
Es bleibt (ungetestet) in etwa übrig:

@echo off

FOR %%a IN ( b c d e f g h y ) DO ( 
               FOR /F "tokens=5,*" %%i IN ('dir %a: ^2^>nul ^|findstr /i /C:"%%a: "') DO (  
                              echo %%a ---^> %%j
 ))

REM ..... und danach dein oben angegebener umfangreicher Batch
REM ....



pause

Grüße
Biber
sandrob
sandrob 17.11.2011 um 10:11:04 Uhr
Goto Top
Hallo Biber,

Danke dafür jetzt läuft es zumindestens auf den Vlient bloß witziger weiße nich tauf den Server, was kan das gür Gründe haben?


gruß Sandro
sandrob
sandrob 22.11.2011 um 08:31:26 Uhr
Goto Top
Hallo,

Nach weiteren probieren vermute ich das es an Win 2003 bzw. an Win 2008 liegt das man es mit der FOR schleife nicht auslesen kann, denn auf den normalen Xp / Win 7 Client geht es.
Auf jeden fall habe ich es jetzt nochmal umgeschrieben und den CMD command "vol" benutzt.

BSP: vol C:
zeigt die Volumebeschreibung und die Volume Serial Number an

gruß Sandro