Wie kann ich die aktuelle Breite der Windows-Konsole in einer Umgebungsvariablen innerhalb einer Batch-Datei erhalten?Windows-Konsolenbreite in Umgebungsvariable
Antwort
Ich mag den Ansatz mit dem integrierten mode
Befehl in Windows. Versuchen Sie, die folgende Batch-Datei:
@echo off
for /F "usebackq tokens=2* delims=: " %%W in (`mode con ^| findstr Columns`) do set CONSOLE_WIDTH=%%W
echo Console is %CONSOLE_WIDTH% characters wide
Beachten Sie, dass dies die Größe des Konsolenpuffer zurückzukehren, und nicht die Größe des Fensters (die scrollbaren ist). Wenn Sie die Höhe der Windows-Konsole festlegen möchten, können Sie Columns
im Ausdruck findstr
mit Lines
ersetzen. Auch hier wird es um die Höhe des Puffers zurückkehrt, nicht das Fenster ... Ich persönlich mag einen großen Puffer zurück durch die Geschichte zu ermöglichen, habe Scrollen, für mich so in der Regel die Linien berichten über 3000 :)
Just for fun, hier ist eine Version, die nicht findstr
nicht verwenden, um die Ausgabe zu filtern ... im Fall (aus irgendeinem Grund) Sie haben eine Abneigung gegen findstr
:
@echo off
for /F "usebackq tokens=1,2* delims=: " %%V in (`mode con`) do (
if .%%V==.Columns (
set CONSOLE_WIDTH=%%W
goto done
)
)
:done
echo Console is %CONSOLE_WIDTH% characters wide
Hinweis wurde dies alles versucht, in Windows XP SP3, in einer Reihe von verschiedenen Fenstern (einschließlich eines ausführenden FAR-Managers).
Sie können es nicht in einer Umgebungsvariablen abrufen, es wird jedoch in der Registrierung gespeichert, sodass Sie über Ihr Stapel-Skript darauf zugreifen können.
Es gibt Antworten hier, wie es zu ändern: How to change Screen buffer size in Windows Command Prompt from batch script
Auf ähnliche Art und Weise Sie reg.exe QUERY [key details]
anstatt reg.exe ADD [details]
verwenden können. Einzelheiten finden Sie unter Technet documentation für HKCU\Console
.
Wie funktioniert das mit mehreren Konsolen und mehreren Breiten? Wie kann ich wissen, welcher Schlüssel für meine aktuelle Konsole gilt (im Gegensatz zur Standardbreite für eine neue Konsole)? –
Wenn ich zur Arbeit komme, verlinke ich auf den Technet-Artikel für 'hkcu \ console \ windowsize'. Außerdem weiß ich, dass es eine Powershell-ish-Methode gibt, um die aktuellen Fensterdimensionen und die Puffergröße einzustellen. Ich werde sehen, ob ich etwas Ähnliches finden kann, um die Dimensionen zu lesen anstatt zu setzen. – rojo
@rojo: Es gibt bereits eine Antwort von Ihnen auf die Frage, die ich mit einer Powershell-Methode verknüpft habe. – Vicky
Die Powershell-Eigenschaft (Get-Host).UI.RawUI.WindowSize
legt die Dimensionen des aktuellen Konsolenfensters fest oder gibt sie zurück. Sie können es erfassen mit einer for
Schleife thusly:
for /f %%I in ('powershell ^(Get-Host^).UI.RawUI.WindowSize.width') do set width=%%I
Dies geht davon aus, dass Powershell installiert ist, was für XP-Benutzer möglicherweise nicht der Fall ist. –
+1, Der Powershell-Befehl kann so einfach wie 'Powershell (get-Host) .ui.rawui sein.windowsize.width'. Hintergrundinformationen finden Sie unter http://blogs.technet.com/b/heyscriptingguy/archive/2006/12/04/how-can-i-expand-the-width-of-the-windows-powershell-console.aspx – dbenham
@AxelFontaine - Ich glaube nicht, dass es eine reine Batch-Lösung gibt. Die Informationen werden über .NET bereitgestellt, und soweit ich weiß, ist Powershell die einzige native Skriptsprache, die auf .NET zugreifen kann. Leider haben Sie Recht, Powershell ist möglicherweise nicht auf einem XP-Computer verfügbar. – dbenham
Okay, hier ist eine, die nicht von Powershell erfordert installiert werden. Es erstellt, führt und löscht eine .NET-Anwendung, um eine Batch-Skriptvariable festzulegen. :)
@echo off
setlocal
pushd "%windir%\microsoft.net\"
for /f "delims=" %%I in ('dir /s /b csc.exe') do (
set csc=%%I
goto next
)
:next
popd
echo using System;>width.cs
echo class Width {>>width.cs
echo public static void Main() {>>width.cs
echo string m1 = "{0}";>>width.cs
echo Console.WriteLine^(m1, Console.WindowWidth^); } }>>width.cs
"%csc%" /out:width.exe width.cs >NUL 2>NUL
for /f %%I in ('width.exe') do set width=%%I
del width.exe width.cs
echo %width%
Diese Antwort hängt davon ab, .NET installiert zu haben, und überprüft nicht, ob 'csc.exe' nicht existiert. Das stimme ich der extremen Codierung zu! Gut gemacht. – icabod
Das funktioniert ... aber es ist ein wenig verwirrend, weil Sie '.vb' für die Quelldateierweiterung verwendet haben, aber Ihr Code ist eigentlich C#. – aphoria
Ya, ich fing an, es in vb zu schreiben, aber wechselte zu C#. Ich hatte keine Lust, die Dateierweiterungen zu bearbeiten, aber ich werde es tun, seit jemand es bemerkt hat. :) – rojo
versuchen, diese (Sprache/locale/.net unabhängig):
@ECHO OFF
SET "ConsoleWidth="
SET /A LINECOUNT=0
SETLOCAL ENABLEDELAYEDEXPANSION
FOR /F "tokens=1,2,*" %%A IN ('mode con') DO (SET /A LINECOUNT=!LINECOUNT!+1&IF !LINECOUNT! EQU 4 SET ConsoleWidth=%%B)
SETLOCAL DISABLEDELAYEDEXPANSION
SET "LINECOUNT="
ECHO ConsoleWidth: %ConsoleWidth% characters
getestet auf Windows XP und Windows 7, sowohl in der tschechischen Sprache
- 1. lesen Umgebungsvariable in MonoDevelop
- 2. Tilde Erweiterung in Umgebungsvariable
- 3. Einstellung Umgebungsvariable in Git
- 4. Zugang Umgebungsvariable in package.json
- 5. NetBeans Umgebungsvariable
- 6. GIT_SSH-Umgebungsvariable in Gitconfig festlegen
- 7. Umgebungsvariable als Teilpfad in app.config
- 8. URISyntaxException in gradle Umgebungsvariable während
- 9. Umgebungsvariable in reaktiv-nativ setzen?
- 10. Umgebungsvariable in einem Dateipfad verwenden
- 11. reinitialisieren systemweite Umgebungsvariable in Linux
- 12. Lesen Umgebungsvariable in make-Datei
- 13. Anaconda - Pfad Umgebungsvariable in Windows
- 14. Zugreifen auf Umgebungsvariable in chefSpec
- 15. kann nicht systemweite Umgebungsvariable in
- 16. Expand Bash-Umgebungsvariable mit '('
- 17. Umgebungsvariable innerhalb Variable
- 18. Set Umgebungsvariable mit Salzstack
- 19. Maven Befehlszeilenargumente Umgebungsvariable
- 20. Einstellung Umgebungsvariable mit .htaccess
- 21. UNIX, bekomme Umgebungsvariable
- 22. Pydev Autogen DJANGO_SETTINGS_MODULE Umgebungsvariable?
- 23. .ini Datei laden Umgebungsvariable
- 24. NCrunch erkennt keine Umgebungsvariable
- 25. CMAKE_INSTALL_PREFIX Umgebungsvariable - funktioniert nicht?
- 26. Wohin ging meine Umgebungsvariable?
- 27. Externe Umgebungsvariable als Array
- 28. Process.Start() und PATH Umgebungsvariable
- 29. Umgebungsvariable innerhalb Ziel
- 30. Heroku NODE_ENV Umgebungsvariable
Dieser Ansatz stürzt ab, wenn das System eine andere Sprache als Englisch verwendet. Sehen Sie sich die Antwort von @ user2475020 an, wenn Sie Sprachunabhängigkeit wünschen. – SapuSeven