中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --

联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum
DOS,代表着自由开放与发展,我们努力起来,学习FreeDOS和Linux的自由开放与GNU精神,共同创造和发展美好的自由与GNU GPL世界吧!

中国DOS联盟论坛
现在时间是 2026-06-15 07:41
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » 请问下关于set延迟变量的 查看 6,542 回复 25
16 发表于 2006-11-15 21:41 ·  中国 北京 联通
金牌会员
★★★★
积分 2,902
发帖 1,147
注册 2006-09-21 12:00
UID 63324
性别 男
状态 离线
没看懂是因为: 试图一上来就从含有(变量赋值、变量内容替换、变量显示、如何显示特殊符号)等混合内容的命令串读起:)

) 变量赋值:    set str=www.cn-dos.net

) 变量内容替换:  %str:www=bbs%

) 变量显示:    echo 执行set str=%%str:www=bbs%%
                   (%%代表显示%号本身)

) 显示特殊符号:  echo 执行set str=%%str:www=bbs%%
           %%双百分号代表显示%本身(与值与处理无关),显示结果为:执行set str=%str:www=bbs%

) ……

下面代码很简单 (之所以称做简单是因为:  如果基础知识都学过了,就是很简单)
下面代码也比较难(之所以称作比较难是因为: 如果基础知识不看,上来看就象看程序一样的读,势必总有读不懂的地方)

@echo off
set str=www.cn-dos.net
echo 替换前变量str的内容为: %str%
echo 执行set str=%%str:www=bbs%%
echo 替换后变量str的内容为: %str:www=bbs%
pause



建议dshh98、xue2ye兄先从基础知识学起,会越来越得心应手的~:)

批处理和类似C语言或是VB的学习点不同:
-----------------------------------
) C与VB等都有函数库(函数)可以调用,无论是文件操作还是字符串提取、打印等都有专门的函数库可选。

) 而批处理就是命令的集和。无论是DOS命令或是Windows的CMD Shell还是调用系统或第三方提供的应用程序等……

  它之所以称之为“批处理”,是因为你把那些想要调用运行的命令和赋值等操作统一的使用“成批处理”的方式运行~:)

) “批处理”没有提供给你象API还是函数库的调用解决之道,系统(DOS或是Windows)给你提供内部、外部命令或应用程序有什么就可以调用什么。
 
  例如:DIR是系统的内部命令,但DIR有很多的参数……(它不是批处理提供的)

  以个人理解不标准的非官方的解释就是:批处理就是命令的集和,把很多命令或是程序集中在一个脚本写成的文件里统一运行。

) 所以,C或VB的学习点是语法、函数库、API……

) 批处理学习点:你对操作系统提供的内部命令或是外部命令或是第三方应用程序理解有多深,用的就有多深。

  (举例:) REG.EXE (CMD Shell),它对注册表操作。
        REG有很多执行参数可以选择,批处理应用它只不过是调用了它的某个参数,
        放到批处理里集中和别的指令一块运行而已。

  (举例:) Format 格式化的命令,也有很多参数,可以直接运行,也可以放到批处理这个脚本文件里调用它执行。

  所以,批处理里要想用的得心应手(举例:象版主那样想怎么做就能怎么做),
  就必须将变量的赋值、变量内容替换、特殊符号、转义(脱逸符)等基础知识要学透:)

  而这些基础知识学得有多深、理解的有多透,就意味着你怎么的得心应手的完成意愿~:)

) 如果象学编程一样(象现代教学法:高速什么24小时速成,什么从入门到精通之类的学习方法),根本行不通:)
  到头来还得回过来从新学习这些基础知识:)

) 建议从基础学起。(批处理还就靠这些基础,没这些基础寸步难行)


==========================================

(举一个实例)

  《如何判断变量的长度?》

  如果使用批处理来计算变量(一个存有字符串的变量)内含有字符串的长度,
系统并没有给你直接提供象C或VB计算字串长度的函数,
这个时候,算法和平日积蓄起来的大量处理变量的经验就告诉了你:
应该使用循环单个变量和累加计数等不同的方式来巧妙达到以上功能~:)

(详细实例见下面地址:)
http://www.cn-dos.net/forum/viewthread.php?tid=24745&fpage=1

而这些并不难,它应用的还是变量赋值、循环、累加(也是变量赋值)、延时变量……的基础知识,
所以,离开了基础知识将寸步难行~:)

--------------------------------
所以,学批处理不从基础知识开始学起等于白学~:)


 

[ Last edited by redtek on 2006-11-15 at 09:57 PM ]
    Redtek,一个永远在网上流浪的人……

_.,-*~'`^`'~*-,.__.,-*~'`^`'~*-,._,_.,-*~'`^`'~*-,._,_.,-*~'`^`'~*-,._
17 发表于 2006-11-16 08:06 ·  中国 浙江 温州 瑞安市 电信
初级用户
积分 26
发帖 11
注册 2006-11-11 06:25
UID 70205
性别 男
状态 离线
真是谢谢各位大大啊,我终于学会了。呵呵。。 以前也玩bat ,不过一般都是从做些基础的。能实现的不多。现在终于可以有所提高了。谢谢。cn-dos 。谢谢各位。
18 发表于 2006-11-16 10:50 ·  中国 广西 玉林 博白县 电信
金牌会员
★★★★
积分 3,687
发帖 1,467
注册 2005-08-08 12:00
UID 44210
状态 离线
set str=%str:www=bbs% 将“www.cn-dos.net”替换为“bbs.cn-dos.net”
19 发表于 2007-01-13 10:58 ·  中国 北京 中国科学院研究生院
银牌会员
★★★
积分 1,187
发帖 555
注册 2006-12-21 07:35
UID 74129
性别 男
状态 离线
又知道了一点

解决了我的问题
20 发表于 2007-01-19 05:06 ·  中国 北京 鹏博士BGP
新手上路
积分 1
发帖 3
注册 2007-01-17 09:26
UID 76788
性别 男
状态 离线
不懂啊
21 发表于 2007-03-17 21:53 ·  中国 上海 黄浦区 电信
初级用户
积分 49
发帖 22
注册 2005-08-04 13:44
UID 41332
性别 男
状态 离线
good for me
22 发表于 2007-03-18 00:32 ·  中国 上海 黄浦区 电信
初级用户
积分 49
发帖 22
注册 2005-08-04 13:44
UID 41332
性别 男
状态 离线
详细
23 发表于 2007-03-18 04:50 ·  中国 陕西 咸阳 电信
新手上路
积分 10
发帖 5
注册 2007-03-18 04:23
UID 82118
性别 男
状态 离线
谢谢搂住的 分享
24 发表于 2007-12-23 20:39 ·  中国 广西 百色 中移铁通
银牌会员
★★★
永远的菜鸟
积分 1,335
发帖 574
注册 2007-11-27 12:50
UID 103929
性别 男
来自 广西
状态 离线
很详细具体,太感谢了!
25 发表于 2008-01-11 15:00 ·  中国 北京 联通
新手上路
积分 10
发帖 5
注册 2007-12-27 11:33
UID 106916
性别 男
状态 离线
redtek
好有耐心! 榜样~!
26 发表于 2008-08-20 20:46 ·  中国 江苏 苏州 电信
初级用户
★★
积分 133
发帖 75
注册 2008-08-03 01:08
UID 122677
性别 男
状态 离线
期待更详细的
论坛跳转: