supongo que está utilizando DOS/NT-lote.
Es posible con el comando set/p, porque set/p no se imprime un CrLf
set /p "=Executing backup...." <nul
echo OK
También es posible borrar la línea con un carácter CR. Es importante saber que los caracteres en blanco en la parte frontal de un conjunto/p se ignoran (en Vista, no en XP), por lo que el! Cr! tiene que colocarse más tarde o al final. Un CR solo se puede mostrar con la expansión retrasada, porque% cr% funciona, pero los caracteres CR se eliminan en la fase de expansión porcentual (o directamente después de esta fase), pero no en la fase de expansión retardada.
Ejemplo de un contador que utilizan sólo una línea para la visualización de
@echo off
setlocal EnableDelayedExpansion EnableExtensions
call :CreateCR
for /l %%n in (1,1,10000) do (
set /P "=Count %%n!CR!" <nul
)
echo(
goto :eof
:CreateCR
rem setlocal EnableDelayedExpansion EnableExtensions
set "X=."
for /L %%c in (1,1,13) DO set X=!X:~0,4094!!X:~0,4094!
echo !X! > %temp%\cr.tmp
echo\>> %temp%\cr.tmp
for /f "tokens=2 usebackq" %%a in ("%temp%\cr.tmp") do (
endlocal
set cr=%%a
goto :eof
)
goto :eof
EDIT: Explicación, cómo se crea la variable cr
(hecho con un truco)
Después de ajustar la variable X
a una solo punto (el personaje en sí no es importante), se repite para convertirse en 8188 caracteres por medio de for /L %%c in (1,1,13) DO set X=!X:~0,4094!!X:~0,4094!
Luego la va riable, dos espacios y tanto una CR y LF se repiten en un archivo con echo !X! > %temp%\cr.tmp
(Observe que los dos espacios entre el !X!
y la >
y los finales de línea natural de eco de reparar el daño interno)
Ahora tenemos 8192 caracteres, pero los datos el búfer solo puede contener 8191 caracteres, por lo que se eliminará el último carácter (el salto de línea).
En la siguiente línea echo\>> %temp%\cr.tmp
, otro CR/LF
conjunto se añade al archivo (el \
en el comando es sólo para la salida nada bar El retorno de carro y avance de línea, como echo
por su propia voluntad salida ECHO is ON/OFF
), eso es importante, como un solo CR
no se puede leer al final de una línea (más adelante).
Así que el archivo contiene ahora <8188 .'s><SPACE><SPACE><CR><CR><LF>
El for /f "tokens=2 usebackq" %%a in ("%temp%\cr.tmp") do
lee el segundo modo, los delimters son el espacio estándar y pestaña, por lo que el segundo marcador es un solo CR
, como la siguiente CR/LF
se elimina como línea estándar final.
Finalmente el endlocal
se utiliza para volver a un entorno sin las variables temporales X
, c
y a
existente (igual que con el endlocal
entre paréntesis, que permite el ajuste de cr
antes de la endlocal
realmente hace efecto al final de los soportes (también se podría escribir como for /f "tokens=2 usebackq" %%a in ("%temp%\cr.tmp") do endlocal&set cr=%%a&goto :eof
)
además
Esta fue mi primera forma de crear un carácter CR, pero necesita un poco de tiempo y un archivo temporal.
Más tarde vi un método más simple para recuperar el CR desde un comando copy /z
.
for /f %%a in ('copy /Z "%~dpf0" nul') do set "CR=%%a"
¿En qué sistema operativo se encuentra? –
sí, Windows Server 2003, se me olvidó ... – aemme