varnik 10 Geschrieben 11. Oktober 2005 Melden Teilen Geschrieben 11. Oktober 2005 Hallo zusammen, ich möchte, dass ein Skript (nur .cmd bzw. .bat ) die zur Zeit aktive Partition herausfindet und deren Nummer einer Variable als Wert übergibt. Der Befehl diskpart gibt etwa so aus. Microsoft DiskPart Version 5.1.3565 Copyright (C) 1999-2003 Microsoft Corporation. Auf Computer: PCQ19 Datentr„ger 0 ist der derzeit gew„hlte Datentr„ger. WDC WD1600JD-00HBB0 Datentr„ger- kennung : 30CA30C9 Typ : IDE Bus : 1 Ziel : 0 LUN-Kennung : 0 Volume Bst Bezeichnung DS Typ Gr”áe Status Info ---------- --- ----------- ----- ---------- ------- --------- -------- Volume 1 C XP_speziell NTFS Partition 9 GB OK Startpar Volume 2 D XP_allgemein FAT32 Partition 28 GB OK Volume 3 E DATEN FAT32 Partition 28 GB OK Das Skript sollte aber auf unterschiedlich partitionierten Systemen laufen. Es kann sein, dass alle vier Basis-Partitionen startfähig sind. Das Ziel ist die boot.ini automatisch zu erzeugen nach dem ein Image auf eine beliebige Partition bespielt wird. Zitieren Link zu diesem Kommentar
lefg 276 Geschrieben 11. Oktober 2005 Melden Teilen Geschrieben 11. Oktober 2005 Hallo Nik, ich würde es wohl mit der For-Schleife und der Textiteration /F machen. Kennst du dich damit aus oder brauchst du Hilfe? http://www.bb-sys.de/bbshell.htm Gruß Edgar Zitieren Link zu diesem Kommentar
lefg 276 Geschrieben 11. Oktober 2005 Melden Teilen Geschrieben 11. Oktober 2005 Mit welchem Parameter erhält man eigentlich die obrige Anzeige durch Diskpart? Zitieren Link zu diesem Kommentar
varnik 10 Geschrieben 11. Oktober 2005 Autor Melden Teilen Geschrieben 11. Oktober 2005 diskpart /s active.txt wobei active.txt folgende Zeilen beinhaltet select disk 0 detail disk Zitieren Link zu diesem Kommentar
thorgood 10 Geschrieben 11. Oktober 2005 Melden Teilen Geschrieben 11. Oktober 2005 oder echo list vol | diskpart Zitieren Link zu diesem Kommentar
varnik 10 Geschrieben 11. Oktober 2005 Autor Melden Teilen Geschrieben 11. Oktober 2005 Hallo Nik, ich würde es wohl mit der For-Schleife und der Textiteration /F machen. Kennst du dich damit aus oder brauchst du Hilfe? http://www.bb-sys.de/bbshell.htm Gruß Edgar Hallo Edgar, ein Bisschen Kenntnisse fehlen mir noch. Du hast mir schon mehrmals geholfen, aber diese Aufgabe ist mir viel zu viel. Was ich nicht kann, ist nachdem "Startfar" gefunden wird, die Volumennummer einer Variable übergeben. Die steht ja ganz vorne. Zitieren Link zu diesem Kommentar
varnik 10 Geschrieben 11. Oktober 2005 Autor Melden Teilen Geschrieben 11. Oktober 2005 oder echo list vol | diskpart Danke! Ist ja ein kürzerer Weg. Das Skript sollte IMHO erstens die Zeile rausfinden, dann die Zeile einer anderen FOR-Schleife übergeben. Genau hier bin ich überfordert. Zitieren Link zu diesem Kommentar
lefg 276 Geschrieben 11. Oktober 2005 Melden Teilen Geschrieben 11. Oktober 2005 for /f %%e in ('echo list vol | diskpart') do echo %%e pause Das will leider nicht funktionieren. Off-Topic:Ich geh erstmal zu Tisch. Zitieren Link zu diesem Kommentar
thorgood 10 Geschrieben 11. Oktober 2005 Melden Teilen Geschrieben 11. Oktober 2005 Hi, versucht es so. Der Fehlerfall tritt ein wenn ein anderes Volume auch 'System' als Namen hat. echo list vol | diskpart | find "System">%temp%\diskpart.log for /f "tokens=1,2" %%i in (%temp%\diskpart.log) do set aktvol=%%j del %temp%\diskpart.log echo Ergebnis: %aktvol% Mahlzeit Edgar :D thorgood Zitieren Link zu diesem Kommentar
varnik 10 Geschrieben 11. Oktober 2005 Autor Melden Teilen Geschrieben 11. Oktober 2005 for /f %e in ('diskpart /s active.txt') do echo %e Das hat funktioniert. Die active.txt besteht aus einer Zeile list vol Zitieren Link zu diesem Kommentar
varnik 10 Geschrieben 11. Oktober 2005 Autor Melden Teilen Geschrieben 11. Oktober 2005 Hi, versucht es so.Der Fehlerfall tritt ein wenn ein anderes Volume auch 'System' als Namen hat. echo list vol | diskpart | find "System">%temp%\diskpart.log for /f "tokens=1,2" %%i in (%temp%\diskpart.log) do set aktvol=%%j del %temp%\diskpart.log echo Ergebnis: %aktvol% Mahlzeit Edgar :D thorgood Wenn ich das Volume "SYSTEM" benenne, dann wird wirklich bald die ganze Platte nur aus "system"-Volumen bestehen.:) Ich muss die zur Zeit aktive Partition auslesen können, die aber immer unterschiedlich sein kann. Heute die erste, morgen - die dritte. Zitieren Link zu diesem Kommentar
lefg 276 Geschrieben 11. Oktober 2005 Melden Teilen Geschrieben 11. Oktober 2005 for /f "tokens=*" %%e in ('diskpart /s diskpartactive.txt') do echo %%e >> diskpart.txt pause Schauen wir uns das Ergebnis mal an. Microsoft DiskPart Version, 1.0 Copyright (C) 1999-2001 Microsoft Corporation. Auf Computer: R202-ADMIN DISKPART> Volume Bst Bezeichnung DS Typ GrӇe Status Info ---------- --- ----------- ----- ---------- ------- --------- -------- Volume 0 D CD 0 B Volume 1 C Lokaler Dat NTFS Partition 8 GB OK System Volume 2 E Support Dat NTFS Partition 19 GB OK Volume 3 F Swap NTFS Partition 2008 MB OK Auslager Zitieren Link zu diesem Kommentar
lefg 276 Geschrieben 11. Oktober 2005 Melden Teilen Geschrieben 11. Oktober 2005 for /f "tokens=* skip=10" %%e in ('diskpart /s diskpartactive.txt') do echo %%e >> diskpart.txt pause ergibt Volume 1 C Lokaler Dat NTFS Partition 8 GB OK System Volume 2 E Support Dat NTFS Partition 19 GB OK Volume 3 F Swap NTFS Partition 2008 MB OK Auslager Ist im Ergebnis die gewünschte Information enthalten? Zitieren Link zu diesem Kommentar
varnik 10 Geschrieben 11. Oktober 2005 Autor Melden Teilen Geschrieben 11. Oktober 2005 for /f "tokens=* skip=10" %%e in ('diskpart /s diskpartactive.txt') do echo %%e >> diskpart.txt pause Volume [b]1 [/b] C Lokaler Dat NTFS Partition 8 GB OK System Volume 2 E Support Dat NTFS Partition 19 GB OK Volume 3 F Swap NTFS Partition 2008 MB OK Auslager Ist im Ergebnis die gewünschte Information enthalten? Ja. Das Problem ist es , die Volume-Nummer, die vor dem "C" steht in eine Variable umzuwandeln. In deinem Beispiel die 1 Zitieren Link zu diesem Kommentar
lefg 276 Geschrieben 11. Oktober 2005 Melden Teilen Geschrieben 11. Oktober 2005 Ja. Das Problem ist es , die Volume-Nummer, die vor dem "C" steht in eine Variable umzuwandeln. In deinem Beispiel die 1 Dann machen wir mal weiter.Ich habe die Entwicklungsschritte nicht kommentiert. Solle es notwendig sein, gewünscht werden, mache ich es gerne, auch nachträglich. Zitieren Link zu diesem Kommentar
Empfohlene Beiträge
Schreibe einen Kommentar
Du kannst jetzt antworten und Dich später registrieren. Falls Du bereits ein Mitglied bist, logge Dich jetzt ein.