jonas1806
Goto Top

Batch-bei set in der Mitte schreiben?

Hallo,

Ich wollte fragen, ob es eine Möglichkeit gibt, bei set /p in der Mitte zu schreiben (ohne sichtbare Zeichen).
Ich habe es schon mit "Alt+0160" versucht, aber rausgekommen ist nur ein anderes Zeichen, welches ich nicht kopieren konnte.

Hat vielleicht irgendeiner hier eine Idee?
Schonmal danke im Vorraus!

Content-Key: 309592

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

Printed on: April 25, 2024 at 14:04 o'clock

Member: Biber
Biber Jul 12, 2016 updated at 13:15:52 (UTC)
Goto Top
Moin Jonas1806,

ist ein bisschen schwierig zu erkennen, was denn die Frage hinter der Frage ist bzw. welches Ziel du denn verfolgst.
Und was bei dir "in der Mitte schreiben" bedeutet, kannst auch nur du wissen.
Ich sehe doch nicht, ob dein CMD-Fenster eine Textlänge von 30 Zeichen oder von 178 Zeichen zulässt.

Also, evtl. meinst du dieses:
B:\>set /p "test=Mal einen Test machen:                                       "
Mal einen Test machen:                                       kwrekgüpreqkgük

B:\>set test
test=kwrekgüpreqkgük

Wenn du allerdings meinst, dass der Variableninhalt mit führenden Leerzeichen beginnen soll
-> dann muss der Benutzer die schon als Leerzeichen eingeben.
Oder der Batch führende Leerzeichen ergänzen.

Aber schreib doch erstmal, was denn der ganze Plan ist, bevor ich hier rumrate.

Grüße
Biber
Mitglied: 129813
Solution 129813 Jul 13, 2016 updated at 09:00:58 (UTC)
Goto Top
Hi.
If you mean writing in the middle of the console window? Then try this:
@echo off & setlocal enabledelayedexpansion
set "question=Enter your string:"  
:: determine the length of the question
call :strLength strLen "%question%"  
:: determine the number of columns in the console
for /f "tokens=2 delims=: " %%a in ('mode con ^| findstr /i Spalten') DO set consolewidth=%%a  
:: calc the middle offset
set /a midoffset=%consolewidth% / 2 - %strLen%
:: create spacer string
for /L %%a in (1 1 %midoffset%) do set "spacer=!spacer! "  

:: create query line
set /p "answer=%question%!spacer!"  

echo Answer: %answer%

goto :eof

:: makro to determin length of a variable
:strLength
set "#=%~2"  
set length=0
:stringLengthLoop
if defined # (set #=%#:~1%&set /A length += 1&goto stringLengthLoop)
set "%~1=%length%"  
goto :eof
Regards
Member: Jonas1806
Jonas1806 Jul 14, 2016 at 09:27:30 (UTC)
Goto Top
Achso, sorry für die ungenaue Fragestellung.
Ich meine mit "in der Mitte" schreiben, dass der Benutzer im Programm z.B. bei
set /p name=
mittig schreiben kann.
Mitglied: 129813
Solution 129813 Jul 14, 2016 updated at 09:34:35 (UTC)
Goto Top
Then the above code is right for you...It determines the width of the current console automatically and creates a set /p line with the right number of spaces in line 13.
Member: Jonas1806
Jonas1806 Jul 14, 2016 at 09:36:28 (UTC)
Goto Top
ok Danke!