中国DOS联盟论坛

中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --
联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum
游客 | 登录 | 注册 | 会员 | 搜索 | 中国DOS联盟
中国DOS联盟论坛
现在时间是 2026-08-02 21:37
48,038 主题排行 / 350,123 发帖 / 今日 1 篇 / 48,251 会员排行
DOS批处理 & 脚本技术(批处理室) » 怎样设置变量,让文本中的数字自动递增且显示出来?
可打印版本  1,175 / 12
第1楼 binghejin 发表于 2006-12-27 10:49
初级用户 发帖 19 积分 48
怎样设置变量,让文本中的数字自动递增且显示出来?
编写了一个这样的批处理
---------------------------------------------------------
@echo off
title Windows 2000 XP 系统补丁包安装程序 V1.0
COLOR 1f
MODE con: COLS=70 LINES=30
if "%1"=="h" goto help
if "%1"=="" goto 1
:1
if not exist WindowsXP-*.* goto er1
if exist list.txt goto ertxt
if exist ks.bat goto erbat
if exist *.exe goto baohu
goto anzhuang
:ertxt
echo.
echo.
echo.
echo 检测到有非正常退出,正在修复...
del list.txt>nul
goto 1
:erbat
echo.
echo.
echo.
echo 检测到有非正常退出,正在修复...
del ks.bat>nul
goto 1
:baohu
echo.
echo.
echo.
echo 系统补丁程序目前的状态为 易被病毒感染
echo.
echo 正在执行保护机制,请稍候...
ren *.exe *.ccc>nul
if exist *.exe goto baohu
goto anzhuang
:anzhuang
cls
echo.
echo.
echo.
echo =======================================
echo Windows 2000 XP 系统补丁包安装程序 V1.0
echo.
echo         编写:XX
echo.
echo        2006年12月26日
echo =======================================
echo.
set /p v= 是否继续?
if %v%==1 goto st
if %v%==0 goto exist
echo.
echo 输入无效,请重新输入...
goto anzhuang
:st
echo.
echo 正在解除补丁包的保护,安装完毕后自动启动保护机制...
ren *.ccc *.exe>nul
echo.
echo 正在创建补丁包列表,请稍候...
dir /b *.exe>list.txt
echo.
echo 创建列表成功,开始安装...
echo.
echo 开始安装...
echo @echo off>ks.bat
for /f %%a in (list.txt) do echo %%a/u>>ks.bat
call ks.bat
echo.
echo 安装完毕...
echo.
echo 正在删除临时文件...
del ks.bat>nul
del list.txt>nul
echo.
echo 正在执行保护机制,请稍候...
ren *.exe *.ccc>nul
goto end
:er1
echo.
echo 没有发现系统补丁程序,请检查...
goto end
:help
echo ================================================
echo.
echo 本程序可以完全自动的安装系统补丁包
echo.
echo 本程序只能运行在Windows 2000及XP系统下
echo.
echo 您需要做的就是把系统补丁程序放置在本程序的目录下
echo.
echo 然后执行setup.bat文件即可
echo.
echo 本程序会自动识别安装文件并且自动安装
echo.
echo 本程序只有一个执行文件绝对绿色
echo.
echo 有任何疑问或建议欢迎和我联系 QQ:82565161
echo.
echo ================================================
echo ================================================
echo.
echo 如果在安装过程中,系统不断的给出同一个提示
echo.
echo 并不是程序的错误,而是程序在运行保护机制而
echo.
echo 需要保护的系统补丁程序正在被安装,或者正在
echo.
echo 被别的程序使用,您只需要耐心的等到该文件被
echo.
echo 释放。
:end
echo.
pause
:exist
color
cls
----------------------------------------------------------------------------------------------
目前基本上已经可以用了,
但是想增加这样的功能:

在安装开始的时候,显示"正在安装第 1 个系统补丁..."
然后安装第2个的时候,自动变成"正在安装第 1 个系统补丁..."

[ Last edited by namejm on 2006-12-28 at 11:10 AM ]
第2楼 NaturalJ0 发表于 2006-12-27 22:01
银牌会员 发帖 533 积分 1,181
不断设置 title ?
或者 CLS 一下重新排个版?
第3楼 binghejin 发表于 2006-12-28 00:43
初级用户 发帖 19 积分 48
收到错误的提示了,已经改正!还望高手解答!
第4楼 binghejin 发表于 2006-12-29 00:07
初级用户 发帖 19 积分 48
难道我的问题写的太模糊了?
那就简单称述一下:

就是我的批处理目的是要运行一个批处理文件所在的目录下的所有补丁程序,方法是使用dir /b 输出一个列表.然后再安装.

但是现在的问题是在安装的时候屏幕上没有相应的提示.

我想达到的目的就是:在安装列表里面的第 1 个补丁的时候,屏幕显示:正在安装第 1 个补丁"

然后安装第 2 个的时候,又显示是在安装第 2 个,以此类推,直到安装完毕!

望高手解答!
第5楼 redtek 发表于 2006-12-29 00:21
金牌会员 发帖 1,147 积分 2,902



Title 是设置CMD当前窗口的标题~:)
   见 Title /? 帮助信息~:)

大概原理,就是输出到要Call来执行安装补丁包的过程中,再插入一个设置显示窗口标题的命令,这样先显示标题,然后就安装……

如果不喜欢 Title 显示标题的方式,就 Echo 显示正在安装哪一个补丁,变量取自%%a ~:)

如果希望递增数字: set /a a+=1
          Echo %a%
          以后每运行一次 set /a a+=1 命令,则 %a% 中的数字就会递增1。

[ Last edited by redtek on 2006-12-28 at 11:28 AM ]
第6楼 binghejin 发表于 2006-12-29 06:15
初级用户 发帖 19 积分 48
好像不能实现我想要的功能啊

我想要的是:在安装第 1 个的时候显示 1 ,而在安装第 2 个的时候显示 2 啊,

我也不是太懂 for 这个命令,麻烦给直接写成代码吧!
第7楼 binghejin 发表于 2006-12-29 06:25
初级用户 发帖 19 积分 48
for /f %%a in (list.txt) do (
set /a a+=1
    echo 正在安装第 %a% 个补丁
echo %%a/u>>ks.bat

难道是这样?好像也没有成功啊!
第8楼 namejm 发表于 2006-12-29 06:27
荣誉版主 发帖 1,737 积分 5,226 来自 成都
第9楼 zh159 发表于 2006-12-29 06:31
金牌会员 发帖 1,467 积分 3,687
改改namejm版主的不用延迟变量,用call也OK

第10楼 binghejin 发表于 2006-12-29 07:57
初级用户 发帖 19 积分 48
各位老大啊,现在可以倒是可以显示正在安装第几个了,但还不是我要的呀,现在显示的是这样
正在安装第 1 个补丁
正在安装第 2 个补丁
正在安装第 3 个补丁
.........
全部现实完了后才开始安装。

我要的是在安装第 1 个的时候显示
正在安装第 1 个补丁..
然后安装,装完了后变成
正在安装第 2 个补丁
然后安装第 2 个。
.................

能实现么?
第11楼 tao0610 发表于 2006-12-29 08:15
高级用户 发帖 218 积分 579
加进去就行了.


pause
第12楼 zh159 发表于 2006-12-29 08:16
金牌会员 发帖 1,467 积分 3,687
把文件名放入list.txt

第13楼 binghejin 发表于 2006-12-29 23:52
初级用户 发帖 19 积分 48
非常感谢大家的帮助,在你们的帮助下,我的问题终于解决了。

代码使用的是11楼的代码!

在这里谢谢所有帮助我的人!
[ 联系联盟系统管理团队 - 中国DOS联盟 - 标准版 ]
Sponsored by ifanr Inc | © 2001–2023