Batch Script Wort Schreiben?
Hallo,
ich möchte mit einem Befehl in einem Batch script etwas ausgeben.
das geht ja mit echo ...
aber was ist wenn sich das wort nach und nach aufbauen soll?
2 Antworten
Batch hat eigentlich keinen Befehl, welche in der gleiche Zeile weiterschreibt.
...Aber einen Befehl in den man in der gleichen Zeile weiter schreiben kann bis man Enter drückt.
set /p "variable=gib was ein:"
naja jetzt muss man set/p nur noch sagen das die Eingabe "Nichts" aus dem "Nichts" kommt (<nul) und schon bleibt der Cursor brav dort wo er nach Ausgabe des (Auforderungs)Textes war ... und wartet auf die nächste Ausgabe...
demo1.cmd
@echo off
<nul set /p "=H"
timeout 1 >nul
<nul set /p "=a"
timeout 1 >nul
<nul set /p "=l"
timeout 1 >nul
<nul set /p "=l"
timeout 1 >nul
echo o
pause
solcher Spagetticode ist natürlich blöd da ohnehin immer das gleiche gemacht wird geht auch ein For-Loop:
@echo off
for %%a in (h a l l "o " W e l) do (
<nul set /p "=%%~a"
timeout 1 >nul
)
echo t
pause
Vor langer Zeit habe ich eine recht vielseitige Subroutine geschrieben , welche das eigentliche Programmieren solcher Geisterschreibmaschinen um einiges vereinfacht. Man übergibt der Subroutine :GostType einfach nur den Text...
siehe:
...und Dir dürfte klar werden, das Batch absolut keine Sprache für Anfänger ist.
In Powershell ist das ein Kinderspiel:
Demo.ps1
$Text='Hallo Welt!
Ich bin ein Text
ueber mehrere Zeilen.
'
$Delay=100
[char[]]$Text|%{
Write-Host "$_" -NoNewline -Foreground green
if ( !($Text.Length -eq ++$i)) {Start-Sleep -m $Delay}
}
pause
Schwieirg und oft fehlerbehaftet:
https://code-examples.net/de/q/6c6b99
Du könntest die Charcter in einer Variable sammeln und dann am Ende ausgeben.
Unter linux/cygwin wäre es einfach echo -n