Skalierung per Batch-Befehl?
Moin Moin alle zusammen,
ich habe schon im Internet gesucht, habe dort aber nichts verstanden. Ich möchte mir eine Batchdatei schreiben, welche beim Ausführen meinen Bildschirm auf 125% skaliert. Könnt ihr mir helfen? Ich weiß, dass es geht, ich verstehe es nur nicht.
LG und vielen Dank im Voraus,
Lucskiii
2 Antworten
Direkt per Batch wird's eher kompliziert.
Die Registry Keys welche emer90 genannt hat dürften einem Anfänger eher in Verwirrung stürzen und benötigen einen Neustart des Systems... Keine Option.
Auf die schnell hätte ich nur eine undokumentierte Systemfunktion zur Hand, welche sofort auf alle Monitore wirkt. (keine Garantie, das eine solche Hintertür mal wieder entfernt wird, einstweilen funktioniert es)
Die entsprechende Powershell-Schnittstelle habe ich so in eine Batch eingebettet, das Du dich nicht weiter Darum kümmern must.
Wenn Du möchtest, kannst Du den Defaultwert ändern. Der Rest ist empfindlich gegen Rumfummelei 😖
changeMonitorScale.cmd
@echo off
::Hilfestellung
:: Scaling = 0 : 100% (default)
:: Scaling = 1 : 125%
:: Scaling = 2 : 150%
:: Scaling = 3 : 175%
rem setze Defaultwert auf 125% Den darfst Du ändern
set "Scaling=1"
rem das geht dir nix an
for %%s in (0 1 2 3) do ( if "%%s" equ "%~1" set "Scaling=%%s")
powershell -c "$User32 = Add-Type -me '[DllImport("""user32.dll""")] public static extern bool SystemParametersInfo(uint uiAction, uint uiParam, uint pvParam, uint fWinIni);' -name WinUser -ns API -PassThru ;$User32::SystemParametersInfo(0x009F, %Scaling%, $null, 1)>$null"
Du kannst die Batch auch mit den Parametern 0 ,1 ,2 oder 3 aufrufen
- für 100% :
changeMonitorScale.cmd 0
- für 150%
changeMonitorScale.cmd 2
....oder Verknüpfungen anlegen (am besten an die Taskleiste anpinnen)

Kann man das auf einen speziellen Bildschirm anwenden? Wenn ich zb 3 oder 2 Habe, dass das nur auf Hauptschirm oder meinentwegen Monitor2 angewand wird?, denn dieser Befehl ist schonmal eine sehr gut Hilfe aber in meinem Fall wendet er das auf alle Bildschirma an
Die Einstellung wird in der Registry unter den beiden Keys HKLM\System\CurrentControlSet\Control\GraphicsDrivers\ScaleFactors\%MonitorID%
und
HKCU\Control Panel\Desktop\PerMonitorSettings\%MonitorID%
gespeichert. Einfach diese Eintrag entsprechend per bat anpassen und fertig.
Dir ist schon Klar, das sich für jemanden, der keine tiefgehenden Erfahrungen mit Batch hat zum Fiasko entwickeln könnte? Die meisten DAU-Unfälle gehen auf eine zerschossene Registry...
Ist mir durchaus bewusst. ich hab auch mal klein angefangen.. und mir die ein oder andere Windowsinstallation versaut. Aber ganz ehrlich? Das ist jetzt 20 Jahre her und ich kann sagen das man durch Fehlersuche am meisten lernen kann.
Aber zurück zum Thema. Sachen wie eine Sicherung der Registry oder eine Vollsicherung sollte man eigentlich als gegeben voraussetzen können. Besonders wenn es sich um ein Produktivsystem und keine Testumgebung handelt.
hast Du das auch mal selber probiert?
Nein habe ich nicht, da ich die Funktion nicht benötige. Ich habe auch keine Lösung gegeben, sondern nur eine Richtung gezeigt. Nächster logischer Schritt wäre natürlich sich zu informieren, welche Werte dort existieren, und wie man diese ändern muss um sein Wunschziel zu erreichen. Klar deine Lösung ist einfacher und sauberer, jedoch wird da dann nur Copy&Paste gemacht, und nichts bei gelernt.
🤭🤫
hast Du das auch mal selber probiert? Dir ist schon Klar, das sich für jemanden, der keine tiefgehenden Erfahrungen mit Batch hat zum Fiasko entwickeln könnte? Die meisten DAU-Unfälle gehen auf eine zerschossene Registry...
Zumal die Keys der Monitore nicht unbedingt nutzerfreundlich sind:
und auch nicht unbedingt übertragbar...
Hast Du genug vertrauen in meine "Künste" für eine "Blindflug" durch Deine Registry? Ich kenne Deine MonitorIDs nicht!
...und natürlich wird es auch erst nach erneutem Login wirksam...🤮
Da ist es bequemer die Sache in den Einstellungen zu Regeln.