Board logo

标题: [代码合集] 关于进度条的问题 [打印本页]

作者: wchong    时间: 2018-2-3 22:33     标题: 关于进度条的问题

我在本论坛拷贝的一段进度条的批处理,
@echo off
::hnfeng@2012-04-12
title 进度条效果演示
cd /d "%~dp0"&color 3E&mode con cols=80 lines=13
set a1=▏&set a2=▎&set a3=▍&set a4=▌&set a5=▋&set a6=▊&set a7=▉&set a8=█
set n=0&set bar=&set x=0
:BAR
if %n%.==1. set bar=%bar%%a1%&goto BAR2
if not %n%.==0. call;set bar=%bar:~,-1%%%a%n%%%
:BAR2
cls&echo.&echo.&echo        正在合并映像文件到硬盘,不可关闭此窗口,请耐心等待.........
echo.&echo                                   已经完成:%p% %%%
echo      ┌-------------------------------------------------------------------┐
if not "%bar%".=="". echo       %bar%&echo       %bar%&echo       %bar%
echo      └-------------------------------------------------------------------┘
ping 127.1 -n 1 >nul
if %n%.==8. (set n=1&set /a x=%x%+1
if %x%==33 goto END) else (set /a n=%n%+1)
set /a p=(%n%+8*%x%)*100/272
goto BAR
:END
echo.&echo       完成...... &pause>nul


我有一个合并SWM镜像到分区的命令
for %%a in (C D E F G H I J K L M N P U V S Y Z) do if exist "%%~a:\install.swm" set "swm=%%~a:"
imagex /export %swm%\install.swm * /ref %swm%\*.swm R:\OKRBackup\Factory\install.wim
想用上面的进度条显示合并swm镜像的进度,不知道要怎么添加,求大师帮忙
作者: 慕夜蓝化    时间: 2018-2-5 09:48

  1. 一般来讲,这个东西用多线程实现起来比较好些。
  2. 但也是不好估算时间。
  3. 批处理因为没有多线程这个概念,只能在某一条语句执行完毕后再执行下一句。
  4. 因此,通常的做法是,在工作完成以后,你添加一个过场动画,具体你可以这样来做。
  5. 将 上面的代码 单独保存为一个test.bat
  6. 然后通过call 语句,来直接调用。
  7. 大概可以这样。
  8. set/a a=1
  9. if %a% equ 1 echo,1&call test.bat&执行完成。
  10. 你看着在你的批代码中替换一下。
复制代码
  1. 这是Java中的一段代码,你可以参考下。
  2. public class BRDemo9 {
  3. public static void main(String args[]){
  4. Thread t1 = new Thread(() -> {
  5. for(int i = 0;i < 3;i++){
  6. Jutil.sleep(2000);
  7. }
  8. });
  9. t1.start();
  10. System.out.printf("——>");
  11. while(t1.isAlive()){
  12. System.out.print(">");
  13. Jutil.sleep(100);
  14. }
  15. }
  16. }
复制代码





欢迎光临 批处理之家 (http://www.bathome.net/) Powered by Discuz! 7.2