batch file进展纺车

我一直在努力几天,似乎可以得到这个工作。 我find一个例子,但它使用(CryEcho),这将无法正常工作。 我只是想添加这个让用户知道正在进行的事情正在执行IP地址。 我在这里find了一些代码,但是这让我感到困惑,因为我只是为了好玩而乱开batch file

无论如何,我想有一些东西,像下面的例子,但像(等待… [微调])的文字。 谢谢!

@echo off setlocal set COUNT=0 set MAXCOUNT=10 set SECONDS=1 :LOOP title "\" call :WAIT title "|" call :WAIT title "/" call :WAIT title "-" if /i "%COUNT%" equ "%MAXCOUNT%" goto :EXIT set /a count+=1 echo %COUNT% goto :LOOP :WAIT ping -n %SECONDS% 127.0.0.1 > nul ping -n %SECONDS% 127.0.0.1 > nul goto :EOF :EXIT title FIN! endlocal 

我也发现这个代码:

 @echo off rem Example showing how to use CryEcho to produce a spinning wheel to show activity. CryEcho Working ... call :DoSomeWork call :SpinAlive call :DoSomeWork call :SpinAlive call :DoSomeWork call :SpinAlive call :DoSomeWork call :SpinAlive call :DoSomeWork call :SpinAlive call :DoSomeWork call :SpinAlive call :DoSomeWork call :SpinAlive call :DoSomeWork call :SpinAlive call :DoSomeWork cryecho \s\nFinished. goto :eof :DoSomeWork ping -n 1 localhost > nul goto :eof :SpinAlive if "%Spinner%" == "2" (cryecho \\\b) if "%Spinner%" == "3" (cryecho -q "|"\b) if "%Spinner%" == "4" (cryecho /\b set Spinner=0) else (cryecho -\b set Spinner=1) set /A Spinner=%Spinner%+1 goto :eof 

Solutions Collecting From Web of "batch file进展纺车"

主要的技巧是将光标移回到同一行。
这可以通过carriage returnbackspace字符来完成。

 @echo off setlocal EnableDelayedExpansion for /f %%a in ('copy /Z "%~dpf0" nul') do set "CR=%%a" FOR /L %%n in (1,1,10) DO ( call :spinner ping localhost -n 2 > nul ) exit /b :spinner set /a "spinner=(spinner + 1) %% 4" set "spinChars=\|/-" <nul set /p ".=Waiting !spinChars:~%spinner%,1!!CR!" exit /b 

<CR>字符是从copy /z的输出创建的。
输出由set /p ,因为这会省略最后的CR/LF输出。
!CR! 每次输出强制光标移回第一列。
但是,由于Win7和Vista删除了set /p的前导输出中的所有空格和CR ,所以它被放置在最后。

 @ECHO OFF SETLOCAL ENABLEDELAYEDEXPANSION CALL :BACKSPACE $BS SET /A FULL_COUNT=75 SET /A MAX_COUNT=160 SET /A Spin_Delay=60 SET "_MSG=Process running..." SET /A CTR=0 IF NOT [%1]==[] SET "_MSG=%~1" IF NOT [%2]==[] SET /A FULL_COUNT=%2 IF NOT [%3]==[] SET /A SPIN_DELAY=%3 IF %FULL_COUNT% GTR %MAX_COUNT% SET /A FULL_COUNT=%MAX_COUNT% <nul SET/P="%_MSG%*" SET "SPINNER=³/Ä\" FOR /L %%A IN (1,1,%FULL_COUNT%) DO ( CALL :DELAY %SPIN_DELAY% <nul CALL SET/P="%$BS%%%SPINNER:~!CTR!,1%%" SET /A CTR=%%A %% 4 ) <nul SET/P="%$BS%*" ENDLOCAL & EXIT /B %CTR% :BackSpace setlocal for /f %%a in ('"prompt $H&for %%b in (1) do rem"') do set "BS=%%a" endlocal&call set %~1=%BS%&exit /b 0 :Delay msec setlocal set/a correct=0 set/a msecs=%1+5 if /i %msecs% leq 20 set /a correct-=2 set time1=%time: =% set/a tsecs=%1/1000 2>nul set/a msecs=(%msecs% %% 1000)/10 for /f "tokens=1-4 delims=:." %%a in ("%time1%") do ( set hour1=%%a&set min1=%%b&set sec1=%%c&set "mil1=%%d" ) if /i %hour1:~0,1% equ 0 if /i "%hour1:~1%" neq "" set hour1=%hour1:~1% if /i %min1:~0,1% equ 0 set min1=%min1:~1% if /i %sec1:~0,1% equ 0 set sec1=%sec1:~1% if /i %mil1:~0,1% equ 0 set mil1=%mil1:~1% set/a sec1+=(%hour1%*3600)+(%min1%*60) set/a msecs+=%mil1% set/a tsecs+=(%sec1%+%msecs%/100) set/a msecs=%msecs% %% 100 :: check for midnight crossing if /i %tsecs% geq 86400 set /a tsecs-=86400 set/a hour2=%tsecs% / 3600 set/a min2=(%tsecs%-(%hour2%*3600)) / 60 set/a sec2=(%tsecs%-(%hour2%*3600)) %% 60 set/a err=%msecs% if /i %msecs% neq 0 set /a msecs+=%correct% if /i 1%msecs% lss 20 set "msecs=0%msecs%" if /i 1%min2% lss 20 set "min2=0%min2%" if /i 1%sec2% lss 20 set "sec2=0%sec2%" set "time2=%hour2%:%min2%:%sec2%.%msecs%" :wait set timen=%time: =% if /i %timen% geq %time2% goto :end goto :wait :end for /f "tokens=2 delims=." %%a in ("%timen%") do set num=%%a if /i %num:~0,1% equ 0 set num=%num:~1% set/a err=(%num%-%err%)*10 endlocal&exit /b %err%