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

  • Soru

  • 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?

    18 Ağustos 2019 Pazar 16:46

Yanıtlar

  • 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

    18 Ağustos 2019 Pazar 18:17

Tüm Yanıtlar

  • 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

    18 Ağustos 2019 Pazar 18: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)


    18 Ağustos 2019 Pazar 18: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

    18 Ağustos 2019 Pazar 18:45