2012-10-10 4 views
5

Quindi, attualmente sto creando una "schermata di caricamento" e, se possibile, per risparmiare spazio nella mia codifica, voglio sapere se è possibile modificare una riga già emessa. Avrei forse una staffa [] come una fase di caricamento, quindi sarebbe possibile mettere una staffa, quindi aspettare e vedere se l'utente preme C (per continuare) per 1-2 secondi, e se non passa alla fase successiva ([] [])? Attualmente ho uno script in cui [] è impostato come load e per ogni fase, faccio CLS e poi echo %LOAD%[].È possibile modificare una riga già emessa nel batch di Windows?


Inoltre, se voglio solo fare un aggiornamento di stato su una linea, come ad esempio:

Checking status... 
Loading server... 

e poi

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

punti di bonus se si posso trovarmi un personaggio come compatibile con Batch.


+2

No, ma è possibile utilizzare 'cls' e un ciclo goto o la barra del titolo (vedi comando' title'). Verifica anche questa discussione: http://ss64.org/viewtopic.php?id=919. – npocmaka

+0

@npocmaka: dovresti eliminare il nostro commento e renderlo una risposta. –

+0

sì, lo so. Questo è quello che sto facendo attualmente. –

risposta

6

È possibile ommit i CLS e ricreare l'intero schermo con l'aiuto di set /p, come set /p non emette un ritorno a capo, è possibile aggiungere il testo.

Normalmente set /p è per assegnare il testo ad una variabile immesso da un utente, ma se si utilizza il reindirizzamento da NUL esso emette semplicemente del testo.

@echo off 

for /L %%n in (1 1 5) do (
    <nul set /p ".=[]" 
    ping -n 2 localhost > nul 
) 
echo(
echo The end 

L'aggiornamento dello stato che hai chiesto, può essere gestita allo stesso modo, in quanto aggiunge solo qualcosa per la linea.
Se si desidera modificare parti della linea o la linea completa, è necessario spostare il cursore indietro o all'inizio della riga.
Entrambi possono essere eseguiti con il carattere backspace o il carattere di ritorno a capo.

Questo è un esempio che conta su una posizione schermo fisso

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

Questo è un grande trucco. Grazie! –

3

Creazione di un blockchar come può essere fatto con

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% 

Grazie alla dbenham Generate nearly any character, including TAB, from batch

+0

Si potrebbe voler unire questo con l'altra risposta per tenerlo insieme. –

Problemi correlati