• Hallo an alle AutoIT'ler

    ich möchte ein kleines Programm schreiben das mir das leidige Diskpart auf DOS mit den Befehlen abnimmt.

    DISKPART>
    Als Erstes die Nummer des Sticks ermitteln. Man erkennt den Stick anhand der Datenträgergröße:
    DISKPART> list disk
    Den Stick auswählen:
    DISKPART> select disk <USB-Stick Nummer>
    Stick löschen:
    DISKPART> clean
    Eine Partition anlagen:
    DISKPART> create partition primary
    Die neue Partition auswählen:
    DISKPART> select partition 1
    Partition als aktiv markieren:
    DISKPART> active
    Formatieren:
    DISKPART> format fs=ntfs (fat; fat32)
    Der neuen Partition einen Laufwerksbuchstaben zuweisen:
    DISKPART> assign
    Diskpart verlassen:
    DISKPART> exit

    Wer kann mir bei dieser Umsetzung helfen ????? bin für jede Hilfe dankbar.
    :klatschen:

  • Für den Anfang ein kleiner Grundaufbau auf diesem du aufsetzen kannst:

    Btw: Beim Format würde ich noch den QUICK-Parameter hinzufügen.

    2 Mal editiert, zuletzt von AspirinJunkie (26. April 2016 um 22:37) aus folgendem Grund: Umlaute in der Ausgabe noch korrigiert

  • @stefanwue

    Rufe diskpart mit dem Parameter /s <Skript> auf. Der Parameter /s verwendet ein Datenträgerpartitionierungsskript. In dem Skript fasst Du Deine diskpart-Befehle zusammen.

  • Hallo stefanwue
    also irgendwie kommen mir die Befehle ziemlich bekannt vor.
    Ich erstelle mir nämlich auch damit öfters einen bootfähigen USB-Stick, um Windows 7 auf einem Rechner zu installieren.

    Dafür verwende ich aber kein Script, mit Diskpart kann man wohl auch ganz viel Sch... machen.
    Wenn da das Script mal etwas falsch mach (z.B. den USB-Stick doch nicht richtig erkennt) so würde Diskpart einem wohl das falsche Laufwerk bearbeiten.

    Daher habe ich mir die Befehle in eine Text-Datei geschrieben und kopiere sie einfach in das DOS-Fenster.
    Dann kann ich nach jedem Befehl sehen, was Diskpart wirklich macht.

    Das ist zwar langsamer, aber auch sicherer und wenn ich da einen Fehler sehe, so kann ich Dikpart beenden, bevor da etwas schiefgeht.
    So oft erstelle ich auch keinen Stick und die Zeit nehme ich mir halt, dass ist mir allemal lieber, als sich nachher über eine Datenverlust zu ärgern
    Das richtige Backup dann zurück zuspielen dauert garantiert auch länger.

    Sowieso braucht man den USB-Stick nicht jedesmal neu mit Diskpart zu erstellen, wenn sich die Windows-Version darauf geändert hat.
    Wenn man sich den Stick einmal erstellt hat, so kann man ihn auch unter Windows neu formatieren und dann die neuen Daten darauf schreiben.


    MfG:
    BigRox

  • @__mk__
    Er weiß aber noch nicht vorher welche Nummer der zu formatierende Stick hat.
    Dies möchte er ja erst dynamisch aus der list disk - Ausgabe auslesen.
    Bei Nutzung eines entsprechenden Skriptes müsste man diese Nummer schon vorher kennen.

  • AspirinJunkie.

    Da hast Du recht. Ein Skript ist sehr statisch. Über das Auslesen mit Hilfe von list disk kann ich mir auch nicht sicher sein, dass ich genau das richtige Laufwerk erwische. Die Ausgabe von list disk liefert nicht genügend Informationen. Auf Grund der Größe kann ich nicht auf den richtigen Wechseldatenträger schließen. Da musste ich schon jeden Datenträger auswählen und mir die Details anschauen. Oder ich erstelle mir dynamisch mein Datenträgerpartitionierungsskript, indem ich vorher in der PowerShell mir die USB-Sticks auswerten lasse: Get-Disk | Where-Objekt -FilterScript {$PSItem.Bustype -eq 'USB'}. Die PowerShell kann ich auch aus dem AutoIT-Skript ausführen.

  • Wir verwenden bei uns diskpart in Verbindung mit dem Script Parameter. Allerdings ist die Kritik/Warnung durchaus berechtigt, solange man keine zuverlässig Methode hat um die richtige "Disk" auszuwählen. Bei uns ist das nicht wirklich problematisch, weil wir das ganze in einer WinPE Umgebung für teilautomatisierte Neuinstallationen verwenden. In den Systemen gibt es daher nur 2 Datenträger (WinPE Boot Stick + lokale Festplatte). Da die lokale Festplatte immer die selbe ID hat brauchen wir hier nichts weiter prüfen. Im schlimmsten Fall könnte sich der Stick aber selbst löschen (z.B. wenn die HDD nicht von der WinPE Umgebung erkannt wird).

    Bei einem System mit produktiver Installation wäre ich jedenfalls ebenfalls sehr vorsichtig mit diskpart. Ein kleiner Fehler und das System ist gelöscht.

    Einmal editiert, zuletzt von misterspeed (27. April 2016 um 18:25)

  • Man sollte nicht mit list disk arbeiten sondern mit list volume.

    Mit list disk bekommt man z.B. diesen Ausdruck:

    DISKPART> list disk


    Datentr. Status Größe Frei Dyn GPT
    -------- ---------- ------- ------- --- ---
    0 Online 932 GB 0 B

    wohingegen der Aufruf von list volume folgendes ergibt:

    DISKPART> list volume


    Volume Bst Bezeichnung DS Typ Größe Status Info
    ---------- --- ----------- ----- ---------- ------- --------- --------
    Volume 0 C laepi D NTFS Partition 59 GB OK System
    Volume 1 D laepi D NTFS Partition 873 GB OK
    Volume 2 X Wechselmed 15 GB


    Da die Buchstaben für die eingebauten Festplatten bekannt sind, kann man jederzeit verhindern, dass eine Festplatten versehntlich formatiert wird.

    Wenn man nun diskpart /s f:/scribt.txt >f:/output.txt aufruft passiert folgendes:
    Sofern in der Datei scribt.txt der Befehl "list volume" (ohne Anführungszeichen) steht - befindet sich das Ergebnis des Befehls in output.txt.
    Output.txt kann man nun problemlos in Autoit auswerten. Der Stick sollte sich erkennen lassen.


    Im zweifel haben wir ja auch noch Befehle in Autoit, mit denen man Laufwerke abfragen kann...


    Das sollte sich also machen lassen -ohne dass man jedesmal Angst hat die Platte zu formatieren.


    Gruß


    Peter

    Hinweise auf Suchmaschinen finde ich überflüssig - wer fragt hat es nicht gefunden oder nicht verstanden. Die Antwort gibt sich oftmals schneller als der Hinweis auf Dr. Goggle & Co.

    Ab 19-10-22 ergänzt um:

    Die Welt wird nicht bedroht von den Menschen, die böse sind, sondern von denen, die das Böse zulassen. (Albert Einstein)

  • @Peter S. Taler

    Das Ergebnis aus "list volume" kannst du aber nicht zu "select disk" verwenden. Da die Volume-Nummern nicht zwingend mit den Disknummer übereinstimmen.

    Beispiel:

    list disk:

    Datentr. Status Größe Frei Dyn GPT
    -------- ---------- ------- ------- --- ---
    Datenträger 0 Online 698 GB 0 B
    Datenträger 1 Online 1864 GB 0 B
    Datenträger 2 Online 7396 GB 0 B <- Wechseldatenträger

    list volume:

    Volume Bst Bezeichnung DS Typ Größe Status Info
    ---------- --- ----------- ----- ---------- ------- --------- --------
    Volume 0 E DVD-ROM
    Volume 1 C NTFS Partition 967 GB Startpatition
    Volume 2 NTFS Partition 300 MB Versteckt
    Volume 3 FAT32 Partition 100 MB System
    Volume 4 NTFS Partition 450 MB Versteckt
    Volume 5 D NTFS Partition 1863 GB
    Volume 6 F Wechselmed 7395 MB <- Wechseldatenträger


    Wie du siehst ist für den USB-Stick die Datenträgernummer die 2 wenn du nun aber die Volumenummer anschaust ist es die 6 und mit der kannst bei "select disk" nichts anfangen.

    Andy hat mir ein Schnitzel gebacken aber da war ein Raupi drauf und bevor Oscar das Bugfixen konnte kam Alina und gab mir ein AspirinJunkie.

    Einmal editiert, zuletzt von chip (27. April 2016 um 21:17)

  • Erstell doch eine Datei mit einem bestimmten Namen auf dem Datenträger. Es wird der Datenträger herausgesucht, der diese Datei hat, gelöscht und die datei danach wieder neu draufgeschrieben. Solange niemand so doof ist eine solche Datei auf einem der anderen Datenträger ins hauptverzeichnis zu packe, dürfte nichts passieren. Die paar Bytes dürften ja auch nicht stören ;)

  • chip..
    ja da muss ich Dir recht geben. Das hätte mir auffallen müssen. Sorry

    Da bleibt entweder Kanashius oder eines meiner Lieblingstools....USBDLM von http://www.uwe-sieber.de/usbdlm.html. Damit läßt sich für Wechseldatenträger IMMER ein def. LAufwerksbuchstabe vergeben. Das Tool hat max. Charme :)


    Gruß


    Peter

    Hinweise auf Suchmaschinen finde ich überflüssig - wer fragt hat es nicht gefunden oder nicht verstanden. Die Antwort gibt sich oftmals schneller als der Hinweis auf Dr. Goggle & Co.

    Ab 19-10-22 ergänzt um:

    Die Welt wird nicht bedroht von den Menschen, die böse sind, sondern von denen, die das Böse zulassen. (Albert Einstein)

  • Nur der Vollständigkeit halber die Portierung von Diskpart nach PowerShell:

    Code
    Get-Disk | Where-Object -FilterScript {$PSItem.Bustype -eq 'USB'} | Clear-Disk -RemoveData -Confirm:$false -PassThru | New-Partition -UseMaximumSize -IsActive -AssignDriveLetter | Format-Volume -FileSystem NTFS


    Hier findest Du eine Auflistung aller CmdLets aus dem Modul Windows Storage Management.