Win 7 Energiesparplan - Direkter und Rotierender wechsel (in der Taskleiste)
16.06.2011
20:41:46 Uhr1606 Aufrufe
20:41:46 Uhr
Hilfreich +1
Seit Windows 7 wurde dieses Symbol für PC aus der Taskleiste verbannt
Moin,
nun hat es mich doch ständig gestört in die Energieoptionen zu hangeln und dann weiter unten oder weiter oben draufzuklicken um ein anderes Schema auszuwählen.
Was es so an Tools und Tipps dazu gibt ist auch nicht so die Menge.
Vorangig ist der Batch in einen leeren Ordner zu Verfrachten, und über
einen Rechtsklick auf die Taskleiste -> Symbolleiste -> neue Symbolleiste... ->Ordner auswählen
einzufügen.
Über die CMD werden die Links der Energieschemata mit dem Parameter "Link" erzeugt.
Der Link des aktuellen Energieschema ist mit (x) gekenzeichnet.
Der Parameter "-" nimmt das aktuelle Energieschema aus der Rotation heraus.
Diese Einstellungen werden in den Batch hinterlegt.
Der Parameter "+" setzt die Rotation wieder züruck (alle Energieschemata sind wieder in der Rotation) und die Links werden erstellt.
Für den Wechsel von zwei Presets empfielt es sich die restlichen aus der Rotation zu nehmen, danach die Links zu löschen und nur den Batch anzuklicken.
Der Batchname erhält das aktuelle und das nächste Energieschema.
so genug der Worte.
der Code ist so geschrieben, dass ein Eingeschaltenes Echo mit der Erstellung der Temporären .VBS und .CMD Dateien kompatibel ist.
Dadurch kann man(n) auch besser eventuelle Fehler im Code beim Debuggen ausmachen - das echo der Befehle ist auf den Promt und NUR die Ausgabe der Befehle dort wo sie hin soll.
Gruß Phil
nun hat es mich doch ständig gestört in die Energieoptionen zu hangeln und dann weiter unten oder weiter oben draufzuklicken um ein anderes Schema auszuwählen.
Was es so an Tools und Tipps dazu gibt ist auch nicht so die Menge.
Vorangig ist der Batch in einen leeren Ordner zu Verfrachten, und über
einen Rechtsklick auf die Taskleiste -> Symbolleiste -> neue Symbolleiste... ->Ordner auswählen
einzufügen.
Über die CMD werden die Links der Energieschemata mit dem Parameter "Link" erzeugt.
Der Link des aktuellen Energieschema ist mit (x) gekenzeichnet.
Der Parameter "-" nimmt das aktuelle Energieschema aus der Rotation heraus.
Diese Einstellungen werden in den Batch hinterlegt.
Der Parameter "+" setzt die Rotation wieder züruck (alle Energieschemata sind wieder in der Rotation) und die Links werden erstellt.
Für den Wechsel von zwei Presets empfielt es sich die restlichen aus der Rotation zu nehmen, danach die Links zu löschen und nur den Batch anzuklicken.
Der Batchname erhält das aktuelle und das nächste Energieschema.
so genug der Worte.
01.
:: -- schnipp ---- SwitchPowerSheme.cmd ---- 02.
@echo off 03.
if "%~1" == "del.rename" del "%temp%\rename.cmd" & goto :eof 04.
if "%~1" == "Rotate" del "%temp%\Rename.cmd" & goto :Link 05.
if "%~1" == "del.Reset" del "%temp%\Reset.cmd" & goto :Link 06.
if "%~1" == "del.noSwitch" del "%temp%\noSwitch.cmd" 07.
if "%~1" == "/?" ( 08.
echo Wechselt das Energieschema rotierend und/oder erstellt Links zum direkten wechsel 09.
echo\ 10.
echo Syntax: 11.
echo "%~n0" [-^|+^|Link] 12.
echo ohne Parameter wird das Energieschema rotierend gewechselt 13.
echo - das Aktuelle Schema wird aus der Rotation entfernt 14.
echo + Pro Energieschema wird ein Link erstellt. Und Reset 15.
echo der Rotationsliste. 16.
echo der Aktive Link ist mit ^(x^) versehen. 17.
echo Link Pro Energieschema wird ein Link erstellt. 18.
echo\ 19.
echo\ Wenn Keine Links zu den Energieschemata gefunden werden 20.
echo\ wird der Batchname mit dem Aktiven und dem naechsten versehen. 21.
goto :eof 22.
) 23.
setlocal 24.
set "Link=" 25.
set "OrigBatchname=SwitchPowerSheme" 26.
if /i "%~1" == "Link" goto :test 27.
for /f "tokens=1,5* delims=: " %%i in ('powercfg list^|findstr :^|findstr /n ^^^^') do ( 28.
set "Guid%%i=%%j" 29.
for /f "delims=()" %%l in ("%%k") do (set "Name%%i=%%l" 30.
if exist "%~dp0*%%l.lnk" set "Link=1" 31.
) 32.
echo "%%k"|find "*" >nul&&set "NrAktiv=%%i" 33.
set "MaxGuid=%%i" 34.
) 35.
if not "%~1" == "-" goto :XnoSwitch 36.
:: Nichtvorhandenen Zeilenvorschub erfassen 37.
for /f %%i in ('findstr /n /v /x /c:":::- %NrAktiv%" "%~0"^|find /c ":"') do for /f %%j in ('^(findstr /n /v /x /c:":::- %NrAktiv%" "%~0"^&echo :^)^|find /c ":"') do if %%i ==%%j (set "LineFeed=") else set "LineFeed=^>nul" 38.
findstr /x /c:":::- %NrAktiv%" "%~0" >nul 2>nul || ( 39.
>&4 echo @echo off 40.
>&4 echo ^( 41.
>&4 echo ^>^&4 findstr /v /x /c:":::- %NrAktiv%" "%~f0" 42.
>&4 echo\^>^&4 echo\%LineFeed% 43.
>&4 echo ^>^&4 echo :::- %NrAktiv% 44.
>&4 echo ^)4^>"%~dp0noSwitch.me" 45.
>&4 echo del "%~f0" 46.
>&4 echo ren "%~dp0noSwitch.me" "%~nx0" 47.
>&4 echo "%~f0" "del.noSwitch" 48.
) 4>"%temp%\noSwitch.cmd"^ 49.
&&"%temp%\noSwitch.cmd" || "%~f0" noSwitch 50.
:XnoSwitch 51.
if not "%~1" == "+" goto :XReset 52.
:Reset 53.
( 54.
>&4 echo @echo off 55.
>&4 echo ^( 56.
>&4 echo findstr /v /b /c:":::- " "%~f0" 57.
>&4 echo ^)^>"%~dp0Reset.me" 58.
>&4 echo del "%~f0" 59.
>&4 echo ren "%~dp0Reset.me" "%OrigBatchname%%~x0" 60.
>&4 echo "%~dp0%OrigBatchname%%~x0" "del.Reset" 61.
) 4>"%temp%\Reset.cmd" 62.
"%temp%\Reset.cmd" 63.
:XReset 64.
:Rotate 65.
set /a y=(NrAktiv+1)%%MaxGuid,x=MaxGuid/y >nul 2>nul && set /a NrAktiv=y || set /a NrAktiv=MaxGuid 66.
set /a NextAktiv=NrAktiv 67.
:Rotate2 68.
set /a y=(NextAktiv+1)%%MaxGuid,x=MaxGuid/y >nul 2>nul && set /a NextAktiv=y || set /a NextAktiv=MaxGuid 69.
findstr /x /c:":::- %NrAktiv%" "%~f0" >nul && goto :Rotate 70.
findstr /x /c:":::- %NextAktiv%" "%~f0" >nul && goto :Rotate2 71.
call set "GuidNew=%%Guid%NrAktiv%%%" 72.
call set "NewName=%%Name%NrAktiv%%% -nach- %%Name%NextAktiv%%%" 73.
if "%~1" == "" Powercfg -setactive %GuidNew% 74.
if not defined Link 4>"%temp%\rename.cmd" ( 75.
>&4 echo ren "%~f0" "%NewName%%~x0" 76.
>&4 echo "%~dp0%NewName%" "del.rename" 77.
) && "%temp%\rename.cmd" 78.
:Test 79.
if not "%~n0" == "%OrigBatchname%" 4>"%temp%\rename.cmd" ( 80.
>&4 echo ren "%~f0" "%OrigBatchname%%~x0" 81.
>&4 echo "%~dp0%OrigBatchname%%~x0" Rotate 82.
) && "%temp%\rename.cmd" 83.
:Link 84.
if not "%~1" == "" powercfg list|find ":"|find " %~1 " >nul 2>nul && Powercfg -setactive %~1 85.
set "LinkPfad=%~dp0" 86.
::set "LinkName=%~n0" 87.
set "ProgPfad=%~dp0" 88.
set "ProgFile=%~nx0" 89.
::set "Parameters=GUID" 90.
set "Beschreibung=Aktiv oder Inaktiv" 91.
92.
for /f "tokens=1,5* delims=: " %%i in ('powercfg list^|findstr :^|findstr /n "^"') do ( 93.
4>"%temp%\MakeShortCut.vbs" ( 94.
>&4 echo Set objShell=WScript.CreateObject^("Wscript.Shell"^) 95.
>&4 echo Set objShortcut=objShell.CreateShortcut^("%LinkPfad%Temp.lnk"^) 96.
for /f "delims=()" %%l in ("%%k") do ( 97.
if exist "%LinkPfad%*%%l.lnk" del "%LinkPfad%*%%l.lnk" 98.
findstr /x /c:":::- %%i" "%~f0" >nul&& >&4 echo objShortcut.Description="Nicht Automatisch"||echo "%%k"|find "*" >nul && ( 99.
>&4 echo objShortcut.Description="Aktiviertes Energieschema" 100.
) || ( 101.
>&4 echo objShortcut.Description="Nicht Aktiv" 102.
) ) 103.
>&4 echo objShortcut.TargetPath="%ProgPfad%\%ProgFile%" 104.
>&4 echo objShortcut.WorkingDirectory="%ProgPfad%" 105.
>&4 echo objShortcut.Arguments = "%%j" 106.
>&4 echo objShortcut.Save 107.
) 108.
cscript //nologo "%temp%\MakeShortCut.vbs" 109.
for /f "delims=()" %%l in ("%%k") do echo "%%k"|find "*" >nul && ren "%LinkPfad%Temp.lnk" "%%i (x) %%l.lnk" || findstr /x /c:":::- %%i" "%~f0" >nul && ren "%LinkPfad%Temp.lnk" "%%i - %%l.lnk" || ren "%LinkPfad%Temp.lnk" "%%i %%l.lnk" 110.
) 111.
del "%temp%\MakeShortCut.vbs" 112.
goto :eof 113.
:: -- schnapp ---- SwitchPowerSheme.cmd ----der Code ist so geschrieben, dass ein Eingeschaltenes Echo mit der Erstellung der Temporären .VBS und .CMD Dateien kompatibel ist.
Dadurch kann man(n) auch besser eventuelle Fehler im Code beim Debuggen ausmachen - das echo der Befehle ist auf den Promt und NUR die Ausgabe der Befehle dort wo sie hin soll.
Gruß Phil














