36539
Goto Top

Bildschirmposition dem Ausgabefenster einer Batch vorgeben

Hallo,

in Zusammenhang mit Ausgabefenster fuer lange Zeichenketten habe ich Fragen.
Ich wollte nicht im Thread dazwischen posten.

Der mode-Befehl ist mir bisher nur bekannt als "mode x,y" (x= Breite, y= Länge des Ausgabefensters)
Die Variante von bastla mit "mode con cols=x" (x=zahl) aus obigem Thread kannte ich bisher nicht (funktioniert einwandfrei)

Generelles Problem:
Ich habe noch keine Lösung für die Festlegung der Bildschirmposition eines Batch-Ausgabefensters.

1.
Was bewirkt die Angabe "con cols=200" genau?
Ist es Zufall oder öffnet sich damit ein Batchfenster immer annähernd genau in Vollbild?
Bei mir ist es ca. 8mm breiter als Vollbild.

2.
Die Ausgabefenster einer Batch öffnen standardmäßig bei jedem Neustart an anderer Bildschirm-Position.
Gibt es einen Befehl mit der ich dem Ausgabefenster einer Batch die Bildschirmposition fest vorgeben kann?

Danke
gruß
onegasee59

Content-Key: 60008

Url: https://administrator.de/contentid/60008

Ausgedruckt am: 28.03.2024 um 15:03 Uhr

Mitglied: bastla
bastla 29.05.2007 um 01:12:14 Uhr
Goto Top
Hallo onegasee59!

Was bewirkt die Angabe "con cols=200" genau?
... ist nur die ausführlichere Schreibweise zur Festlegung der "Spaltenanzahl", also der Anzahl von Zeichen je Zeile oder der "Breite"; siehe auch die Hilfe zu "mode".

Ist es Zufall oder öffnet sich damit ein Batchfenster immer annähernd genau in Vollbild?
Nur eine Annahme (Biber wird es natürlich genau wissen face-wink): Wenn aufgrund der eingestellten Schrift und der vorgegebenen Zeichenanzahl das Fenster zu breit wäre, wird es auf die von Dir beschriebene (annähernd Vollbild-) Größe (mit horizontalem Scrollbalken) gesetzt.
Eine Möglichkeit zur exakten Positionierung (und auch Größenvorgabe) findest Du im Systemmenü des CMD-Fensters (Register "Layout"). Wenn Du bei der Bestätigung Deiner Einstellungen "Eigenschaften gelten für alle Fenster mit gleichem Namen" wählst, sollte die Position/Größe damit auch für die Zunkunft fixiert sein.

Für manuell aufzurufende Konsolenfenster kannst Du eine Verknüpfung zur "%windir%\System32\cmd.exe" erstellen und in den Eigenschaften der Verknüpfung ebenfalls "Layout"-Einstellungen vornehmen.

Grüße
bastla
Mitglied: 45753
45753 29.05.2007 um 06:32:21 Uhr
Goto Top
Moin!

Nachdem mir Bastla den Anstoss in die richtige Richtung gegeben hat, hab ich damit nun ein bischen experimentiert. Schriftgroesse usw. wurden nicht veraendert:

---

Zu Frage 1:

Also der komplette Befehl fuer die Fenstergrossenangabe lautet:
mode con cols=80 lines=25

Das ist zugleich auch die Standardgroesse des Shellfensters.

wenn man nur cons=80 angibt, dann gilt diese Zahl auch fuer die Lines.
cols=80 bedeutet, dass die Zeile 80 Zeichen lang ist.

Bei 1024x768 waere cons=128 Bildschirmfuellend:
128x8=1024.
Bei 1600x1200 waeren es cols=200.
200x8=1600

Um den Scrollbalken auf der rechten Seite zu entfernen, musst du lines mitangeben.

1024x768:
768:16=59
Naja, nicht ganz richtig. Aber bei mir ist 59 die maximale Zeilenanzahl ohne den rechten Scrollbalken.

Fullscreen

mode con cols=128 lines=59 bei 1024x678
mode con cols=200 lines=95 bei 1600x1200

---

zu Frage 2:

Nun braeuchte man noch den passenden Befehl fuer Vollbild...
Das Fenster oeffnet sich wie schon erwaehnt immer wo anders...

mit nircmd und dem Befehl "nircmd win [action] [Additional Parameters]" koennte man es vielleicht schaffen.

Beispiel fuer den IE:
nircmd win setsize class "IEFrame" 50 50 400 300

Da das Shellfenster kein normales Windowsfenster ist wird das wohl nicht funktionieren...

Genauso wenig ist es moeglich das Shellfenster mit diversen Hilfen in den System-Tray zu minimieren...

Doch das hier funktioniert

nircmd win center class "ConsoleWindowClass" zum Zentrieren des Fensters
nircmd win max class "ConsoleWindowClass" zum Maximieren des Fensters


Grüsse,
wobleibtdiezeit
Mitglied: 36539
36539 29.05.2007 um 07:36:58 Uhr
Goto Top
Hallo,

vielen Dank bastla und wobleibtdiezeit

Genauso wenig ist es moeglich das Shellfenster mit diversen Hilfen in den System-Tray zu minimieren...

Nicht dafür, aber fürs verstecken hätte ich was

Erstelle dir mit notepad ein vbs-script (z.Bsp.: hide-cmd.vbs) mit
nachfolgendem Inhalt, welches deine CMD aufruft. Packe dein *.vbs und
die *.cmd ins _gleiche_ Verzeichnis.

snipp-----
Set WshShell = WScript.CreateObject( "WScript.Shell" )
WshShell.Run "c:\test.cmd",0,True
snapp-----

den pfad "c:\test.cmd" musst Du an deine Bedingungen natürlich
anpassen. Der zweite Wert "0" erzeugt das versteckte Fenster.
Unter WIN 98/ME muss ".cmd" durch ".bat" ersetzt werden


oder mit "Cmdow"
http://www.wintotal.de/yad/index.php?id=2961
http://www.commandline.co.uk/cmdow/index.html

gruß
onegasee59
Mitglied: 45753
45753 29.05.2007 um 16:55:29 Uhr
Goto Top
Hallo onegasee59

cmdow ist Gold wert. Die Examples auf deren Website ebenso. Und die cmd /? ist leicht zu verstehen. So macht das Spass.

Deine vbs = cmdow:

cmdow /run /hid c:\test.cmd

Die Lösung zur Frage 2:

::----- cmdow - Fenster verschieben und neuen Namen geben.bat -----
cmdow %systemroot%\system32\cmd.exe /mov 100 200 /ren "* %~n0 *" /act

@echo off
echo.
pause
::-----

Was ich schon immer haben wollte und mit cmdow nun funktioniert:

::----- cmdow - Fenster Infos.bat -----
@echo off

cmdow %systemroot%\system32\cmd.exe /mov 100 200 /ren "* %~n0 *" /act

echo.
echo * details of only the windows listed on the taskbar *
echo.
cmdow /t
echo.
pause
cls

echo.
echo * details and positions of only the windows listed on the taskbar *
echo.
cmdow /t /p
echo.
pause
cls

if exist "%temp%\cmdow - details of all windows.txt" del /f /q "%temp%\cmdow - details of all windows.txt"

echo * details of all windows * > "%temp%\cmdow - details of all windows.txt"
echo. >> "%temp%\cmdow - details of all windows.txt"
cmdow >> "%temp%\cmdow - details of all windows.txt"
start notepad "%temp%\cmdow - details of all windows.txt"

goto :eof
::-----

Gruesse,
wobleibtdiezeit
Mitglied: 45753
45753 29.05.2007, aktualisiert am 18.10.2012 um 18:32:00 Uhr
Goto Top
Hallo nochmal.

Biber verwieß noch auf diesen Link: BATCH - .BAT zeigt maximal nur ca.150 Zeilen an.

Dabei sind mir ein paar ungereimtheiten aufgefallen, die ich noch gern geklaert haette und die in der Batch dargestellt werden.


@echo off
cls

echo.
echo  *** Suchen nach urspruenglichen cols und lines Werten ***
echo.

for /f "tokens=2" %%i in ('mode con^|find "Spalten"') do set oldcols=%%i  
for /f "tokens=2" %%i in ('mode con^|find "Zeilen"') do set oldlines=%%i  

echo  Momentaner Wert von cols (Spalten) = %oldcols% 
echo  Momentaner Wert von lines (Zeilen) = %oldlines% 
echo.
echo  ?!? Das Fenster hat die Standardhoehe von 25 Zeilen ?!?
echo  ?!? Der Scrollbalken geht aber runter bis auf Zeile 300 ?!?
echo.
set dummychoice=
set /p dummychoice= [ENTER]

mode con cols=128 lines=59

echo.
echo  *** Waechsel zu den Werten cols=128 lines=59 wurde durchgefuehrt ***
echo.
echo  *** Befehl: mode con cols=128 lines=59 ***
echo.
echo 0        10        20        30        40        50        60        70        80        90        100       110       120     
echo 12345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678
echo  Zeile 09
echo  Zeile 10
echo  Zeile 11
echo  Zeile 12
echo  Zeile 13
echo  Zeile 14
echo  Zeile 15
echo  Zeile 16
echo  Zeile 17
echo  Zeile 18
echo  Zeile 19
echo  Zeile 20
echo  Zeile 21
echo  Zeile 22
echo  Zeile 23
echo  Zeile 24
echo  Zeile 25
echo  Zeile 26
echo  Zeile 27
echo  Zeile 28
echo  Zeile 29
echo  Zeile 30
echo  Zeile 31
echo  Zeile 32
echo  Zeile 33
echo  Zeile 34
echo  Zeile 35
echo  Zeile 36
echo  Zeile 37
echo  Zeile 38
echo  Zeile 39
echo  Zeile 40
echo  Zeile 41
echo  Zeile 42
echo  Zeile 43
echo  Zeile 44
echo  Zeile 45
echo  Zeile 46
echo  Zeile 47
echo  Zeile 48
echo  Zeile 49
echo  Zeile 50
echo  Zeile 51
echo  Zeile 52
echo  Zeile 53
echo  Zeile 54
echo  Zeile 55
echo  Zeile 56
echo  Zeile 57
echo  Zeile 58
set dummychoice=
set /p dummychoice= Zeile 59 [ENTER]

mode con cols=%oldcols% lines=%oldlines%

echo.
echo  *** Waechsel zu den alten Werten cols=%oldcols% lines=%oldlines% wurde durchgefuehrt ***
echo.
echo  *** Befehl: mode con cols=%oldcols% lines=%oldlines% ***
echo.
echo  ?!? Beim zuruecksetzen der alten Werte wird das Fenster ?!?
echo  ?!? leider automatisch auf Maximalhoehe des Bildschirms gestraeckt ?!?
echo.
set dummychoice=
set /p dummychoice= [ENTER]

mode con cols=80 lines=25

echo.
echo  *** Waechsel zurueck zur standard Fenster Hoehe lines=25 wurde durchgefuehrt ***
echo.
echo  *** Befehl: mode con cols=80 lines=25 ***
echo.
echo  ?!? Das hier ist wieder die Originalhoehe des standard Fensters ?!?
echo  ?!? Jetzt ist das Fenster nur noch tatsaechliche 25 Zeilen hoch ?!?
echo  ?!? Der Scrollbalken der vorher bis Zeile 300 ging ist verschwunden ?!?
echo  ?!? Ohne Scrollbalken wird leider generel kein Scrollen mehr moeglich sein ?!?
echo.
set dummychoice=
set /p dummychoice= [ENTER]

mode con cols=83 lines=25
cmdow %systemroot%\system32\cmd.exe /max /act
mode con cols=%oldcols% lines=%oldlines%
cmdow %systemroot%\system32\cmd.exe /res /act

echo.
echo  *** Waechsel zurueck zum Originalzustand wurde durchgefuehrt ***
echo.
echo  *** Befehl: mode con cols=83 lines=25 ***
echo  *** Befehl: cmdow %systemroot%\system32\cmd.exe /max /act
echo  *** Befehl: mode con cols=%oldcols% lines=%oldlines% ***
echo  *** Befehl: cmdow %systemroot%\system32\cmd.exe /res /act
echo.
echo  ?!? Was bei diesem Vorgang genau passiert und wieso es so funktioniert ?!?
echo  ?!? kann ich nicht zu 100 Prozent sagen. Im Fullscreen-Modus ist das ?!?
echo  ?!? Fenster offenbar fixiert. cols und lines Aenderungen koennen so nicht ?!?
echo  ?!? direkt auf das Fenster angewendet werden. Wenn man aus dem Fullscreen ?!?
echo  ?!? wieder zurueck zum Fenster-Modus waechselt, dann bekommt das Fenster ?!?
echo  ?!? auf jeden Fall seine alten Masse wieder zurueck und das selbst dann ?!?
echo  ?!? wenn man cols und lines Aenderungen im Fullscreen-Modus vorgenommen ?!?
echo  ?!? hat. Dieses Fenster zeigt nun wieder den Originalzustand eines ?!?
echo  ?!? Shell-Fensters mit den korrekten Fenstermassen und dem Scrollbalken ?!?
echo  ?!? der bis zur Zeile 300 herunterreicht. Der cols-Wert 83 aus dem ersten ?!?
echo  ?!? Befehl ergibt sich aus dem 3 Zeichen breiten Scrollbalken. ?!?
echo  ?!? Taete man die zusaetzlichen 3 cols nicht dazuaddieren, dann wuerde ?!?
echo  ?!? das Fenster schlussendlich einen zusaetzlichen unteren Scrollbalken ?!?
echo  ?!? erhalten. ?!?
echo.
set dummychoice=
set /p dummychoice= [ENDE]

EDIT: Ich hoffe meine Frage aus dem zweiten Screen hatte noch keiner geselen. Ich bin in der Zeile verrutscht und berichtete ueber angebliche 69 Zeilen...

Gruesse
wobleibtdiezeit
Mitglied: 45753
45753 10.06.2007 um 04:39:06 Uhr
Goto Top
Morgen...

...und man kann das Shell-Fenster doch zu seinem Originalzustand wieder zurueckholen.

In meiner oben geposteten Batch ist nun ein fuenfter Schritt mit insgesamt 4 Befehle hinzugekommen.
Fuer diesen automatisierten Vorgang benoetigt man "cmdow".

Gruesse,
wobleibtdiezeit
Mitglied: 36539
36539 12.06.2007 um 23:56:45 Uhr
Goto Top
Hallo wobleibtdiezeit,

Danke

gruß
onegasee59