none
Kann man die GUID eines Energiesparplans per Batch ermitteln? RRS feed

  • السؤال

  • Ich habe vor, in einem BAT-Skript eine GUID anzeigen zu lassen. Der Name des Energiesparplans ist mir bekannt, ich wünsche mir ein echo der zugehörigen GUID-Nummer.

    for /F "skip=2 tokens=2 delims=," %%A in ('wmic computersystem get model /FORMAT:csv') do (set "serial=%%A")
    echo %serial%

    ist mir bekannt von einer Wmic-Abfrage, um das Computermodell auszugeben. Doch mit Powercfg.exe scheint das nicht zu funktionieren, weil ja etliche Zeilen (je nach Anzahl der Energiesparpläne) vorhanden sein können. Weiß jemand Rat?

    17/ذو الحجة/1440 04:46 م

الإجابات

  • Moin,

    ich weiß, Du hast nach Batch gefragt, aber mit PowerShell ist es halt super einfach:

    $pattern = ": (?<guid>.*) \("
    Invoke-Expression "powercfg.exe -list" | foreach {
        if ($_ -match $pattern) {
            $Matches['guid']
        }
    }

    würde alle GUIDs auflisten. Wenn Du den Namen hast, kannst Du die GUID mit

    $pattern = ": (?<guid>.*) \((?<name>.*)\)"
    Invoke-Expression "powercfg.exe -list" | foreach {
        if ($_ -match $pattern) {
            if ($Matches['name'] -eq 'Mein Sparplan') { $Matches['guid'] }
        }
    }
    erhalten. In Batch würde man sich wohl mittelschwer die Finger brechen ;-)

    Evgenij Smirnov

    http://evgenij.smirnov.de

    17/ذو الحجة/1440 06:17 م

جميع الردود

  • Moin,

    ich weiß, Du hast nach Batch gefragt, aber mit PowerShell ist es halt super einfach:

    $pattern = ": (?<guid>.*) \("
    Invoke-Expression "powercfg.exe -list" | foreach {
        if ($_ -match $pattern) {
            $Matches['guid']
        }
    }

    würde alle GUIDs auflisten. Wenn Du den Namen hast, kannst Du die GUID mit

    $pattern = ": (?<guid>.*) \((?<name>.*)\)"
    Invoke-Expression "powercfg.exe -list" | foreach {
        if ($_ -match $pattern) {
            if ($Matches['name'] -eq 'Mein Sparplan') { $Matches['guid'] }
        }
    }
    erhalten. In Batch würde man sich wohl mittelschwer die Finger brechen ;-)

    Evgenij Smirnov

    http://evgenij.smirnov.de

    17/ذو الحجة/1440 06:17 م
  • Danke, aber dein Code hilft mir leider nicht. Einmal wird mir, den Code in nen Batch geschrieben, per Doppelklick aufs CMD-File nichts angezeigt (kein Fenster erscheint). Und des Weiteren wäre es mir wichtig, eine Variable zu haben, damit ich die GUID nicht nur mit echo anzeigen kann, sondern sie außerdem via Batchcode weiter für andere Dinge wie Sparplan löschen nutzen kann.

    Gibts hierzu eine Batch-Lösung? (von der PowerShell verstehe ich leider nicht genug, um eigenständig mehr daraus machen zu können)


    • تم التحرير بواسطة GrosserWindowsFan 17/ذو الحجة/1440 06:36 م
    17/ذو الحجة/1440 06:31 م
  • Moin,

    auf einem deutschen oder englischen System würde der folgende String die Variable ESPGUID mit der GUID befüllen:

    for /f "tokens=4" %a in ('powercfg -list ^| findstr /r ": (?<guid>.*) \(Ausbalanciert\)"') do (set "espguid=%a")

    (in einer Batch natürlich % durch %% ersetzen).

    An welcher Stelle die GUID in anderen Sprachen steht, entzieht sich meiner Kenntnis.


    Evgenij Smirnov

    http://evgenij.smirnov.de

    17/ذو الحجة/1440 06:45 م