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 Nov 16, 2011 um 15:45:08 Uhr
Verschoben von "Ich glaube, es ist Windows" nach "Batch & Shell"

Content-Key: 176349

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

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

Member: Skyemugen
Skyemugen Nov 16, 2011 at 15:29:31 (UTC)
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é
Member: sandrob
sandrob Nov 16, 2011 at 15:44:10 (UTC)
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
Member: Skyemugen
Skyemugen Nov 16, 2011 at 15:51:03 (UTC)
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é
Member: Biber
Biber Nov 16, 2011 at 16:02:57 (UTC)
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
Member: sandrob
sandrob Nov 16, 2011 at 16:37:55 (UTC)
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
Member: Biber
Biber Nov 16, 2011 at 18:01:29 (UTC)
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
Member: sandrob
sandrob Nov 17, 2011 at 09:11:04 (UTC)
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
Member: sandrob
sandrob Nov 22, 2011 at 07:31:26 (UTC)
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