
132749
11.08.2018
Batchfenster links bzw. rechts zentrieren
Hallo zusammen,
ich habe da mal wieder ein Problem und frage mich ob man das irgendwie lösen kann!
Ich möchte, dass das Batchfenster auf dem Desktop links bzw. rechts zentriert angezeigt wird und nicht mal da oder hier! Ist das möglich?
Vielleicht über die Registry? Wenn ja, wie?
Für Eure Hilfe bedanke ich mich im Voraus
Gruß
kampen
ich habe da mal wieder ein Problem und frage mich ob man das irgendwie lösen kann!
Ich möchte, dass das Batchfenster auf dem Desktop links bzw. rechts zentriert angezeigt wird und nicht mal da oder hier! Ist das möglich?
Vielleicht über die Registry? Wenn ja, wie?
mode con lines=40 cols=40
Color CF
TITLE Copyright: myName @ 2018
set "key=HKLM\SOFTWARE\myProgramm"
reg query "%key%" /v Publisher /reg:32 | findstr myName >nul 2>&1 || (
CLS
echo ****************************************
echo * *
echo * myProgramm *
echo * myName *
echo * *
echo * NOT FOUND -- NOT FOUND *
echo * NICHT GEFUNDEN -- NICHT GEFUNDEN *
echo * *
echo ****************************************
ping /n 10 localhost >nul
pause
)
Für Eure Hilfe bedanke ich mich im Voraus
Gruß
kampen
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 383093
Url: https://administrator.de/forum/batchfenster-links-bzw-rechts-zentrieren-383093.html
Ausgedruckt am: 16.05.2025 um 06:05 Uhr
5 Kommentare
Neuester Kommentar
Hallo,
https://stackoverflow.com/questions/7977322/set-the-window-position-of-a ...
Und ein HKCU kann auf jeden Rechner andere Inhalte haben. Ob ein CMD Fenster sich dort einträgt und die Werte auch beachtet bzw. liesst?
Gruß,
Peter
Zitat von @132749:
auf einem anderen PC ausgeführt wird dann funktioniert das nicht!
Davon hast du aber nichts gesagt. Ein anderer Rechner hat eine andere Umgebung (auch wenn der Desktop für dich gleich aussieht) und da gelten dann evtl andere gegenbenheiten. Und das CMD Fenster war nie dafür vorgesehen es wie eine GUI Anwendung auf Desktops zu bewegen, kann es doch mit den groben Werkzeugen ein bisserl gesteuert werdenauf einem anderen PC ausgeführt wird dann funktioniert das nicht!
https://stackoverflow.com/questions/7977322/set-the-window-position-of-a ...
Ich dachte, man könnte das über einen Batchbefehl lösen! Gibt es vielleicht eine andere Lösung um das zu realisieren? Wie sieht es mit dem hinzufügen eines Registry Eintrag aus? Könnte man das damit lösen?
https://superuser.com/questions/532256/where-is-the-information-about-th ...Und ein HKCU kann auf jeden Rechner andere Inhalte haben. Ob ein CMD Fenster sich dort einträgt und die Werte auch beachtet bzw. liesst?
Gruß,
Peter
Ach hör doch auf. Das was du da vorhast, ist eine Positionierung des Fensters zur Laufzeit des Scripts. Da kannst du viel in der Registry ändern - ist das Fenster einmal an seinem Platz, tut sich nichts mehr. Erst beim nächsten Öffnen wäre das wirksam. Da musst du schon mit ganz anderen Mitteln ran und die stehen dir in Batch nicht zur Verfügung.
Das folgende Script definiert zwei Variablen, center_left und center_right. In jeder ist ein Powershell Aufruf gespeichert. Dort kannst du die Plattform API ansprechen. Einmal definiert, kannst du die Variablen immer wiederverwenden, wie ich das am Ende in der Endlosschleife vorgeturnt habe. Kopiere den Code unbedingt über den "Quelltext" Link, damit sich an den Zeilenenden keine Leerzeichen einmogeln.
Steffen
Das folgende Script definiert zwei Variablen, center_left und center_right. In jeder ist ein Powershell Aufruf gespeichert. Dort kannst du die Plattform API ansprechen. Einmal definiert, kannst du die Variablen immer wiederverwenden, wie ich das am Ende in der Endlosschleife vorgeturnt habe. Kopiere den Code unbedingt über den "Quelltext" Link, damit sich an den Zeilenenden keine Leerzeichen einmogeln.
Steffen
@echo off &setlocal
mode con lines=40 cols=40
set center_left=powershell -NoProfile -ExecutionPolicy Bypass -Command ^"^
Add-Type -TypeDefinition '^
using System;^
using System.Runtime.InteropServices;^
public class C {^
[StructLayout(LayoutKind.Sequential)] public struct POINT {public int x; public int y;}^
[StructLayout(LayoutKind.Sequential)] public struct RECT { public int Left; public int Top; public int Right; public int Bottom; }^
[StructLayout(LayoutKind.Sequential)] public struct WINDOWPLACEMENT { public uint length; public uint flags; public uint showCmd; public POINT ptMinPosition; public POINT ptMaxPosition; public RECT rcNormalPosition; }^
[DllImport(\^"user32.dll\^")] public static extern int GetSystemMetrics(int nIndex);^
[DllImport(\^"kernel32.dll\^")] public static extern IntPtr GetConsoleWindow();^
[DllImport(\^"user32.dll\^")] public static extern int GetWindowPlacement(IntPtr hWnd, ref WINDOWPLACEMENT lpwndpl);^
[DllImport(\^"user32.dll\^")] public static extern int SetWindowPlacement(IntPtr hWnd, ref WINDOWPLACEMENT lpwndpl);^
public void center_left() {^
int screen_height = GetSystemMetrics(17);^
WINDOWPLACEMENT wpl = new WINDOWPLACEMENT() {length = (uint)Marshal.SizeOf(typeof(WINDOWPLACEMENT))};^
GetWindowPlacement(GetConsoleWindow(), ref wpl);^
int top = screen_height / 2 - (wpl.rcNormalPosition.Bottom - wpl.rcNormalPosition.Top) / 2, right = wpl.rcNormalPosition.Right - wpl.rcNormalPosition.Left, bottom = screen_height / 2 + (wpl.rcNormalPosition.Bottom - wpl.rcNormalPosition.Top) / 2;^
wpl.flags = 0; wpl.showCmd = 1; wpl.rcNormalPosition.Left = 0; wpl.rcNormalPosition.Top = top; wpl.rcNormalPosition.Right = right; wpl.rcNormalPosition.Bottom = bottom;^
SetWindowPlacement(GetConsoleWindow(), ref wpl);^
}^
}';^
(New-Object C).center_left();^"
set center_right=powershell -NoProfile -ExecutionPolicy Bypass -Command ^"^
Add-Type -TypeDefinition '^
using System;^
using System.Runtime.InteropServices;^
public class C {^
[StructLayout(LayoutKind.Sequential)] public struct POINT {public int x; public int y;}^
[StructLayout(LayoutKind.Sequential)] public struct RECT { public int Left; public int Top; public int Right; public int Bottom; }^
[StructLayout(LayoutKind.Sequential)] public struct WINDOWPLACEMENT { public uint length; public uint flags; public uint showCmd; public POINT ptMinPosition; public POINT ptMaxPosition; public RECT rcNormalPosition; }^
[DllImport(\^"user32.dll\^")] public static extern int GetSystemMetrics(int nIndex);^
[DllImport(\^"kernel32.dll\^")] public static extern IntPtr GetConsoleWindow();^
[DllImport(\^"user32.dll\^")] public static extern int GetWindowPlacement(IntPtr hWnd, ref WINDOWPLACEMENT lpwndpl);^
[DllImport(\^"user32.dll\^")] public static extern int SetWindowPlacement(IntPtr hWnd, ref WINDOWPLACEMENT lpwndpl);^
public void center_right() {^
int screen_width = GetSystemMetrics(16), screen_height = GetSystemMetrics(17);^
WINDOWPLACEMENT wpl = new WINDOWPLACEMENT() {length = (uint)Marshal.SizeOf(typeof(WINDOWPLACEMENT))};^
GetWindowPlacement(GetConsoleWindow(), ref wpl);^
int top = screen_height / 2 - (wpl.rcNormalPosition.Bottom - wpl.rcNormalPosition.Top) / 2, left = screen_width - (wpl.rcNormalPosition.Right - wpl.rcNormalPosition.Left), bottom = screen_height / 2 + (wpl.rcNormalPosition.Bottom - wpl.rcNormalPosition.Top) / 2;^
wpl.flags = 0; wpl.showCmd = 1; wpl.rcNormalPosition.Left = left; wpl.rcNormalPosition.Top = top; wpl.rcNormalPosition.Right = screen_width; wpl.rcNormalPosition.Bottom = bottom;^
SetWindowPlacement(GetConsoleWindow(), ref wpl);^
}^
}';^
(New-Object C).center_right();^"
for /l %%i in () do (
%center_left%
%center_right%
)