komplettte laufwerksliste wie bei diskpart ausgeben.



  • hallo leute.

    ich habe vor mir eine eigene xp dvd zu bauen und hänge eben an der laufwerksbezeichnung etwas fest. ich habe 500 gb speicher auf dem pc der in bestimmte sectoren partitioniert ist. nun möchte ich vor der installation der software dafür sorgen , das die partitionen die richtigen laufwerksbuchstaben erhalten. das prob ist das ich mit GetVolumeInformation() nur die lokalen laufwerke erhalte aber nicht die cd und dvd laufwerke. außerdem ist damit das problem das es keine wirkliche idenxierbare liste ist. ich benötige genau die ausgabe wie bei diskpart damit ich die laufwerke auch richtig anspreche.

    ich habe es absichtlich hier eingestellt und nicht in WINAPI weil es ja auch sein kann, das es einenen ganz normalen stl befehl dafür gibt, den ich aber nicht finde. das gebiet laufwerksbearbeitung ist sowieso sehr dünn gesät bei google, oder ich suche nach den falschen begriffen.

    ich würde mich über eure hilfe freuen und sage schonma danke

    cYa CAD 😕



  • GetLogicalDrives
    GetLogicalDriveStrings



  • hab ich schon, nutzt mir nix. ich brauch die liste _genau_ wie in diskpart und net sortiert nach laufwerksbuchstaben. daran verzweifle ich ja schon die ganze zeit. für mich ist wichtig, wie das system die platten mountet net wie sie in ner liste sortiert nach buchstaben aussehen 😞

    und windows scheint die platten ständig neu einzuhängen, nach jedem reboot. daher nutzt mir logicaldrive nüx, auch GetDriveNumber() oder PathGetDriveNumber() net.

    vielleicht weis ja einer wie ich die ausgabe der shell in eine textdatei lenke. ich muss 2 befehle eingeben und das ergebnis brauche ich in einer text datei. das prob is da aber , das ich die befehl in einem programm selber eingebe.

    zur veranschaulichung :

    shell öffnen,
    type DISKPART
    press return
    type List Volume
    press return

    warten und staunen ^^

    das genau ist die liste die ich so unbedingt benötige. und ich komme mit keinen programmiermitteln zu dieser liste bis jetzt, finde aber wie gesagt auch kaum was, was mich weiter bringt.

    aber danke für deine schnelle antwort ^^

    cYa CAD



  • Dieser Thread wurde von Moderator/in HumeSikkins aus dem Forum C++ in das Forum WinAPI verschoben.

    Im Zweifelsfall bitte auch folgende Hinweise beachten:
    C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?

    Dieses Posting wurde automatisch erzeugt.



  • ich hatte extra geschrieben das ich das mit _absicht_ ins stl c++ forum geschrieben habe und net in die api da ich im zweifelsfalle nur ne möglichkeit suche ausgaben von der shell direkt an eine textdatei umzulenken ....



  • MasterCAD schrieb:

    vielleicht weis ja einer wie ich die ausgabe der shell in eine textdatei lenke. ich muss 2 befehle eingeben und das ergebnis brauche ich in einer text datei. das prob is da aber , das ich die befehl in einem programm selber eingebe.

    ja die windowskinder 😃 dafür gibt es in der console einen operator um stdout umzuleiten. bsp:

    dir > test.txt
    




  • jo miller_m genau sowas suche ich, ich weis das sowas geht nur das wie is mir zur zeit noch schleierhaft, da man hier aber sowieso dauernd nur denkanstöße bekommt bin ich jetzt am googlen nach stdout und umlenken. ich hab das auch mal gemacht zu shell zeiten aber die sources sind bei nem plattencrash mit verschwunden und ich weis net mehr wies ging. aber da ichs schonma gemacht hab bin ich guter dinge ^^ außerdem leite ich ja stderr mit dem logger auch um und stdout ging glaub so ähnlich wenn net genau so ^^

    danke dir erstma 🙄

    // edit

    jo easy gar kein problem, ein problem hingegen stellt sich jetzt dar:

    ich müsste in der shell normal DISKPART dann return und dann List VOLUME eingeben

    das was _dann_ kommt würde ja nun an die txt ausgegeben 🙂

    nun mein problem : wie löse ich die befehle in der shell aus? man kann per script befehle übergeben, diese aber leider so nicht, die muss ich direkt in der shell tippen.

    wie kann ich das per programm auslösen?

    // Edit 2

    und gelöst 😃 danke miller_m genau das wars :

    freopen( "file.txt", "w", stdout );
    system( "diskpart.exe /s callist.txt");
    freopen( "CON", "w", stdout );
    

    die callist.txt enthält folgendes :

    LIST VOLUME
    

    das ergebnis in file.txt ist dann :

    Microsoft DiskPart Version 5.1.3565
    
    Copyright (C) 1999-2003 Microsoft Corporation.
    Auf Computer: POWER
    
      Volume      Bst  Bezeichnung  DS     Typ         GrӇe    Status     Info
      ----------  ---  -----------  -----  ----------  -------  ---------  --------
      Volume 0     W                       DVD             0 B                     
      Volume 1     Z                       CD              0 B                     
      Volume 2     O                       DVD             0 B                     
      Volume 3     P                       DVD             0 B                     
      Volume 4     Q                       DVD             0 B                     
      Volume 5     R                       DVD             0 B                     
      Volume 6     G   Programme    NTFS   Partition     20 GB  OK                 
      Volume 7     H   Spiele       NTFS   Partition     20 GB  OK                 
      Volume 8     I   MP3          NTFS   Partition     29 GB  OK                 
      Volume 9     T   Download     NTFS   Partition     29 GB  OK                 
      Volume 10    F   Extras       NTFS   Partition     10 GB  OK                 
      Volume 11    E   EBooks       NTFS   Partition     29 GB  OK                 
      Volume 12    J   Proggen      NTFS   Partition     20 GB  OK                 
      Volume 13    D   WWW          NTFS   Partition     10 GB  OK                 
      Volume 14    K   Rest         NTFS   Partition     68 GB  OK                 
      Volume 15    C                NTFS   Partition     10 GB  OK         System
    

    also exact die liste die ich gesucht habe und so krampfhaft versucht hab zu erstellen 😃

    danke alle ^^


Anmelden zum Antworten