中国DOS联盟论坛

中国DOS联盟

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

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

游客:  注册 | 登录 | 命令行 | 会员 | 搜索 | 上传 | 帮助 »
中国DOS联盟论坛 » DOS疑难解答 & 问题讨论 (解答室) » 怎样才能理解和学好set命令?
作者:
标题: 怎样才能理解和学好set命令? 上一主题 | 下一主题
sjjhhx
初级用户





积分 24
发帖 11
注册 2007-1-13
状态 离线
『楼 主』:  怎样才能理解和学好set命令?

最近一段时间在学习批处理,下载了一些论坛上的教程还有一些比较经典的贴子。对if for call等一些命令有了一定的认识,唯独对set还是不太深,看了一些贴子还有其自带的帮助都理解不太好。麻烦高手们能不能发一张set的贴子,结合着一些典型的例子将其详解一下,逐行解释一下,觉得这样效果不错,就像有张贴子举一些for的用法一样。看着高手们写的批处理,很多看不明白,大部分是一些很细小的地方,比如说,对一些格式,不明白为什么那样写;对一些符号的运用和配合上不知其所以然。很多高手给出了很好的批处理例子,可是并没有给详细的解释,对我们新手来说是很大的困难呀。如果能百忙之中写出好例子并选择其中一两个给出详细的解释,对我们新手来说学起批处理来效率会更高。不知我所说有没有道理,麻烦了!

2007-2-7 10:38
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
6622186
高级用户





积分 894
发帖 411
注册 2007-2-17
状态 离线
『第 2 楼』:  

对于 set 命令我也不完全懂, 所以也不能帮什么忙.



@set c=     不知则觉多,知则觉少,越知越多,便觉越来越少.        --- 知多少.
@for,/l,%%i,in,(1,1,55)do,@call,set/p=%%c:~%%i,1%%<nul&ping/n 1 127.1>nul


2007-3-9 03:07
查看资料  发短消息 网志   编辑帖子  回复  引用回复
milini
新手上路





积分 10
发帖 5
注册 2006-1-18
状态 离线
『第 3 楼』:  

Set显示、设置或删除环境变量。如果没有任何参数,set 命令将显示当前环境设置。

语法
set [[/a [expression]] [/p [variable=]] string]

参数
/a
将 string 设置成可求值的数字表达式。
/p
将 variable 的值设置成输入行。
variable
指定需要设置或修改的变量。
string
指定要与指定变量关联的字符串。
/?
在命令提示符显示帮助。
注释
使用“恢复控制台”中的 set
set 命令具有不同的参数,可从“恢复控制台”中获得。

使用特殊字符
字符 < > | & ^ 是特殊命令外壳字符,在字符串中使用时必须位于 escape 字符 (^) 之前或用引号引起来(即,"StringContaining&Symbol")。如果要使用引号将含有特殊字符的字符串引起来,则该引号将被设置成环境变量值的一部分。

使用环境变量
使用环境变量可控制某些批处理文件和程序的操作,并可控制 Windows XP 和 MS-DOS 子系统显示和工作的方式。Autoexec.nt 文件中经常使用 set 命令设置环境变量。

显示当前的环境设置
当只键入 set 命令时,将显示当前的环境设置。这些设置通常包含用来帮助查找磁盘上程序的 COMSPEC 和 PATH 环境变量。Windows XP 使用的两个其它环境变量是 PROMPT 和 DIRCMD。

使用参数
当指定变量和字符串的值时,指定的变量值将被添加到该环境,而且该字符串与该变量关联。如果环境中已经存在该变量,新的字符串值将替代旧的字符串值。

如果只为 set 命令指定一个变量和一个等号(没有字符串),则与该变量关联的字符串值将被清除(就象变量根本不存在一样)。

使用 /a
下表按优先性从高到低的顺序列出了支持 /a 的运算符。

运算符 执行的操作
< > 分组
* / % + - 算法
<< >> 逻辑移位
& 按位“和”运算
^ 按位“异或”运算
| 按位“或”运算
= *= /= %= += -= &= ^= |= <<= >>= 分配
, 表达式分隔符

如果使用逻辑 (&& ||) 或模 (%) 运算符,请使用引号将表达式字符串引起来。表达式中的非数字字符串将被视为环境变量名,其值将转化成数字然后才进行处理。如果指定当前环境中没有定义的环境变量名,将会分配零值,允许您对环境变量进行算术运算,而不需要使用 % 找回值。

如果从命令脚本外的命令行中运行 set /a,则会显示该表达式的最终值。

数值是指十进制的数字,在前缀加 0× 则表示十六进制数字,加 0 则表示八进制数字。因此,0×2 与 18 相同,也与 022 相同,八进制表示法容易引起混淆。例如,08 和 09 不是有效数字,因为 8 和 9 不是有效的八进制数字。

使用 /p
要求有提示字符串。

支持延迟的环境变量扩展
已经添加延迟的环境变量扩展支持。默认情况下禁用该支持,不过可使用 cmd /v 对其启用或禁用。

使用命令扩展
当启用命令扩展(默认)并单独运行 set 时,将显示所有当前的环境变量。如果使用一个值来运行 set,则会显示与该值匹配的变量。

在批处理文件中使用 set
创建批处理文件时,可以使用 set 命令创建变量,然后象使用编号变量 %0 到 %9 一样使用这些变量。也可以使用 %0 到 %9 变量作为 set 命令的输入。

从批处理文件调用 set 变量。
从批处理文件调用变量值时,必须将该值用百分号(%)括起来。例如,如果批处理程序创建了一个环境变量 BAUD,则可以在命令行中键入 %baud%,将与 BAUD 关联的字符串作为可替换参数使用。

范例
若要设置名为 TEST^1 的环境变量,请键入:

set testVar=test^^1

若要设置名为 TEST&1 的环境变量,请键入:

set testVar=test^&1

Set 将变量值设置成等号 (=) 后的内容。如果键入:

set testVar="test^1"

将得到如下结果:
testVar="test^1"

要设置名为 INCLUDE 的环境变量,使字符串 C:\Inc(驱动器 C 上的 \Inc 目录)与该变量关联,请键入:

set include=c:\inc

然后可以通过用在名称百分号 (%) 将 INCLUDE 括起,在批处理文件中使用字符串 C:\Inc。例如,可能在批处理文件中包含以下命令,以显示与 INCLUDE 环境变量关联的目录内容。

dir %include%

处理此命令时,字符串 C:\Inc 将替代 %include%。

还可以在批处理程序中使用 set,将新目录添加到 PATH 环境变量中。例如:

@echo off
rem ADDPATH.BAT adds a new directory
rem to the path environment variable.
set path=%1;%path%
set

当启用命令表达式(默认)并使用一个值来运行 set 时,则会显示与该值匹配的变量。例如,如果在命令提示符键入 set p,将得到如下结果:

Path=C:\WINNT\system32;C:\WINNT;C:\WINNT\System32\Wbem
PATHEXT=.COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH
PROCESSOR_ARCHITECTURE=x86
PROCESSOR_IDENTIFIER=x86 Family 6 Model 8 Stepping 1, GenuineIntel
PROCESSOR_LEVEL=6
PROCESSOR_REVISION=0801
ProgramFiles=C:\Program Files
PROMPT=$P$G

2007-3-9 03:29
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
Climbing
铂金会员

网络独行侠


积分 6962
发帖 2753
注册 2003-4-16
来自 河北保定
状态 离线
『第 4 楼』:  

基本的用法就是set的帮助中所说的,但在网上会看到很多另类的用法,只不过是其中一些基本用法的灵活变通,自己一点点分析就明白了。



偶只喜欢回答那些标题和描述都很清晰的帖子!
如想解决问题,请认真学习“这个帖子”和“这个帖子”并努力遵守,如果可能,请告诉更多的人!
2007-3-9 07:33
查看资料  发送邮件  访问主页  发短消息 网志  OICQ (653668)  编辑帖子  回复  引用回复
oilio
高级用户

前进者


积分 641
发帖 303
注册 2007-1-10
状态 离线
『第 5 楼』:  

是的啊,我能理解各位的心情,我也是慢慢搜索过来的,边看边想,边想边实践,这样大多数的问题,都可以自己悟出来。实在不懂了,就问,我想百分之九十九的问题都能解决。



我相信总有一天,总会遇到一个人可以相濡以沫、相吻以湿!
2007-3-11 03:07
查看资料  发短消息 网志   编辑帖子  回复  引用回复
371770923
初级用户





积分 50
发帖 19
注册 2007-5-22
状态 离线
『第 6 楼』:  

还是不明白变量和扩展变量的含义

2007-6-1 15:40
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
lxmxn
版主




积分 11386
发帖 4938
注册 2006-7-23
状态 离线
『第 7 楼』:  

参考这个:

http://www.cn-dos.net/forum/viewthread.php?tid=26918

2007-6-2 04:42
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复

请注意:您目前尚未注册或登录,请您注册登录以使用论坛的各项功能,例如发表和回复帖子等。


可打印版本 | 推荐给朋友 | 订阅主题 | 收藏主题



论坛跳转: