2012-10-10 9 views
5

Tak więc, obecnie robię "ekran ładowania" i prawdopodobnie zapisuję trochę miejsca w moim kodowaniu, chcę wiedzieć, czy mógłbyś edytować linię już wyprowadzoną. Chciałbym mieć nawias [] jako jeden etap załadunku, więc byłoby możliwe postawienie jednego wspornika, a następnie czekanie i zobaczenie, czy użytkownik naciśnie C (dla kontynuacji) przez 1-2 sekundy, a jeśli nie przejdzie do następnego etapu ([] [])? Obecnie mam skrypt, w którym [] jest ustawiony jako load i dla każdego etapu robię CLS, a następnie echo %LOAD%[].Czy można edytować linię już wyprodukowaną w pakiecie Windows?


Ponadto, co będzie, jeśli po prostu chcesz zrobić aktualizację statusu na linii, takich jak:

Checking status... 
Loading server... 

a następnie

Checking status... OK 
Loading server... done 

punkty, jeśli ciebie może znaleźć dla mnie postać podobną do kompatybilną z Batch.


+2

no ale można użyć 'cls' i pętla goto lub pasek tytułu (patrz komenda' title') .Sprawdź również tę dyskusję: http://ss64.org/viewtopic.php?id=919. – npocmaka

+0

@ npocmaka: Powinieneś usunąć nasz komentarz i uczynić go odpowiedzią. –

+0

tak, wiem. Właśnie to robię obecnie. –

Odpowiedz

6

Można ommit z CLS i odtworzenie pełnego ekranu przy pomocy set /p, jak set /p nie emituje do nowej linii, można dołączyć tekst.

Normalnie set /p jest przypisanie tekstu do zmiennej odbieranego przez użytkownika, ale jeśli używasz przekierowania z NUL po prostu wyprowadza tekst.

Aktualizacja statusu, o którą prosiłeś, może być obsługiwana w ten sam sposób, ponieważ dołącza tylko do linii.
Jeśli chcesz zmienić części linii lub całej linii, musisz przesunąć kursor do tyłu lub do początku linii.
Oba można wykonać za pomocą znaku Backspace lub znaku powrotu karetki.

To jest przykład, który liczy na stałym miejscu ekranu

setlocal EnableDelayedExpansion 
for /f %%a in ('copy /Z "%~dpf0" nul') do set "CR=%%a" 
for /L %%n in (1 1 1000) do (
    <nul set /p ".=%%n!CR!" 
) 
+0

To świetna sztuczka. Dzięki! –

3

Tworzenie blockchar jak można zrobić z

setlocal EnableDelayedExpansion 
for /F "usebackq tokens=1" %%c in (
    `forfiles /p "%~dp0." /m "%~nx0" /c "cmd /c echo 0xde"`) do (
    set BlockChar=%%c 
) 
echo %BlockChar% 

Dzięki dbenham Generate nearly any character, including TAB, from batch

+0

Być może zechcesz scalić to ze swoją drugą odpowiedzią, aby zachować ją razem. –

Powiązane problemy