中国DOS联盟

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

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

中国DOS联盟论坛
现在时间是 2026-06-14 20:59
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » 关于set命令的几点疑惑(已解决)
楼 主 关于set命令的几点疑惑(已解决) 发表于 2007-01-21 00:38 ·  中国 广东 广州 电信
初级用户
积分 99
发帖 43
注册 2007-01-12 23:05
UID 76317
性别 男
状态 离线
学习批处理,学到了set命令,一头雾水,在论坛里搜索了一下,是有一些set方面的,但是看了之后还是不太懂,自带的帮助也看了,感觉还是不太懂。哪位有好一点的set的教程啊?发个连接也可以,先谢过了。

[ Last edited by namejm on 2007-1-20 at 08:07 PM ]
2 发表于 2007-01-21 00:43 ·  中国 河北 廊坊 三河市 移动
金牌会员
★★★★
积分 2,725
发帖 1,160
注册 2006-09-23 12:00
UID 63486
来自 河北廊坊
状态 离线
哪里不懂提出来啊。总有人能解答的吧?
三人行,必有吾师焉。 学然后知不足,教然后知困,然后能自强也。
3 发表于 2007-01-21 00:48 ·  中国 重庆 沙坪坝区 电信
新手上路
积分 16
发帖 8
注册 2007-01-20 11:09
UID 77138
性别 男
状态 离线
说出来我们也好学习学习.
4 发表于 2007-01-21 01:16 ·  中国 广东 广州 电信
初级用户
积分 99
发帖 43
注册 2007-01-12 23:05
UID 76317
性别 男
状态 离线
问题都很菜,希望大家有点耐心。。。呵。。
问题一:
set a=
set/p a=请输入关键字……
start http://www.baidu.com/s?wd=%a%
自带的帮助是这样写的:SET /P variable=
那第一句等号右边怎么什么都没有?那到底把什么指派给变量a了?
还有这么一句:”set命令不容许变量含有等号“怎么理解?
问题二:
看到这样一个帖子:
set "STARTPRGNAME=%STARTPRGNAME:"=%"
语句中:"=%"表示什么意思?

if /i "%STARTPRGNAME%" == "cmd" goto :cmd_exe
语句中/i表示什么意思?

if not "%STARTPRGNAME:.bat=%" == "%STARTPRGNAME%" goto :cmd_or_bat
语句中:.bat表示什么意思?

第一句中:set后面的语句为何用引号括起来?代表什么?还有,等号右边的
%STARTPRGNAME的意思是把什么指派给等号左边的STARTPRGNAME了?
第二句中:"%STARTPRGNAME%"是怎么回事?它和%%1有什么区别?
本帖最近评分记录 (共 1 条) 点击查看详情
评分人分数时间
lokeymei +1 2008-11-08 12:59
5 发表于 2007-01-21 03:13 ·  中国 北京 联通
中级用户
★★
带走
积分 435
发帖 88
注册 2005-09-24 19:22
UID 42793
状态 离线
HoHo~我比较适合回答这种基础题目

关于问题一你自己动手试试就知道了。
第一句本意就是想将变量a置空,所以等号右边当然什么都没有了。其实就是删除变量a拉。
第二句的表示读取用户的输入,并且赋值给变量a。这句话是提示给用户看的。也就是说你执行后,屏幕显示,然后你输入并且回车后变量a的值就是了。你增加一句就了解了。
关于这句好理解,像上面的a就是变量名,你说你能设置一个变量名为的吗?

问题二:
你仔细查看的帮助会看到这么句,意思是将变量中的所有字符或字符串换成,帮助中还说。举个例子,变量值为执行后,变量的值为。
于是这句就可以理解为删除变量中的所有引号并将处理后的值仍赋给。有引号是因为它要处理的字符是个。

继续。。。
中的表示不区分大小写。这个好理解,楼主你也太懒了。
再接下来的这句跟上面的变量替换一个意思,再举个例子,假设变量值为,那么==,意思可能是这样(我猜的):如果是.bat文件则跳到这里。

回答最后一行。
就是扩展变量的值,其实就是读取变量了。只是用来表示,因为在批处理中双写才能得到一个,而意思是该批处理文件的第一个参数。你试试新建一个批处理,比如,文件内容只有一行,然后用命令行调用看看 。

打字好累~~

[ Last edited by 0401 on 2007-1-21 at 03:18 AM ]
本帖最近评分记录 (共 12 条) 点击查看详情
评分人分数时间
redtek +7 2007-01-21 05:19
qzwqzw +7 2007-01-21 08:48
hangyug +2 2007-01-23 11:53
wyd531 +2 2007-01-26 03:42
txtrain +2 2007-02-09 22:06
oilio +2 2007-02-14 10:06
mtiankong +2 2007-04-18 09:13
b102588 +2 2007-07-11 21:13
liuyun20 +1 2007-10-20 17:33
regvip2008 +2 2008-01-15 16:40
zyz0304360 +1 2008-01-15 16:59
forkfan +1 2008-04-06 14:55
6 发表于 2007-01-21 04:46 ·  中国 广东 广州 天河区 电信
初级用户
积分 99
发帖 43
注册 2007-01-12 23:05
UID 76317
性别 男
状态 离线
谢谢楼上的耐心回答,辛苦你了。。。问题一我懂了,不过,你可能没看明白我的问题二是什么。
我再说一遍吧。
set "STARTPRGNAME=%STARTPRGNAME:"=%"
语句中:"=%"表示什么意思?

if /i "%STARTPRGNAME%" == "cmd" goto :cmd_exe
语句中/i表示什么意思?

if not "%STARTPRGNAME:.bat=%" == "%STARTPRGNAME%" goto :cmd_or_bat
语句中:.bat表示什么意思?
以上这些都是我看到的一个帖子的内容,其中的问题是写这个帖子的人问的,而我的问题在下面:
第一句中:set后面的语句为何用引号括起来?代表什么?还有,等号右边的
%STARTPRGNAME的意思是把什么指派给等号左边的STARTPRGNAME了?
第二句中:"%STARTPRGNAME%"是怎么回事?
尤其是:它("%STARTPRGNAME%")和%%1有什么区别?学习if时没见有
"%STARTPRGNAME%"形式的参数啊???

[ Last edited by hangyug on 2007-1-20 at 03:50 PM ]
7 发表于 2007-01-21 05:19 ·  中国 北京 朝阳区 联通
高级用户
★★
朦胧的世界
积分 579
发帖 218
注册 2006-10-24 04:29
UID 67972
状态 离线
两大秘笈:

1.善用搜索

2.多看帮助信息

.....

认识自己,降伏自己,改变自己
,才能改变别人!
8 发表于 2007-01-21 06:25 ·  中国 北京 联通
中级用户
★★
带走
积分 435
发帖 88
注册 2005-09-24 19:22
UID 42793
状态 离线
to 楼主:

我在回答中就看明白你的问题二了,只是你没看懂我的回答。
那我也再说一遍吧。
说之前我想告诉你,如果你可以自己动手试的话,我想你已经知道为什么了。
我之前的回答希望你能再认真看下,我只是再这里再举个例子。
@echo off
set STARTPRGNAME=wInG
echo %%STARTPRGNAME%% 变量值为 %STARTPRGNAME%
set STARTPRGNAME=%STARTPRGNAME:G=gzero%
echo %%STARTPRGNAME%% 变量经过字符替换后为 %STARTPRGNAME%
if %STARTPRGNAME%==wingzero echo 看看这句有没有输出
if /i %STARTPRGNAME%==wingzero echo 这句呢?输出了吧。
pause>nul

不玩了,楼主多看几遍上面的解答吧,我已经很难再表达更低的意思了。

BTW:感谢 redtek 为我打的字加分,呵呵。

[ Last edited by 0401 on 2007-1-21 at 06:30 AM ]
9 发表于 2007-01-21 08:04 ·  中国 广东 广州 天河区 电信
初级用户
积分 99
发帖 43
注册 2007-01-12 23:05
UID 76317
性别 男
状态 离线
谢谢0401兄,原来你把我的问题和我所引用帖子中的提问都给回答了,再次感谢你的回复。。。
10 发表于 2007-01-21 09:00 ·  中国 天津 电信
初级用户
积分 97
发帖 43
注册 2005-07-25 22:07
UID 41055
状态 离线
我也要感谢这么热心且耐心的朋友!
11 发表于 2007-01-23 11:36 ·  中国 江苏 苏州 电信
初级用户
积分 25
发帖 11
注册 2007-01-23 10:33
UID 77427
性别 男
状态 离线
有学了不少,呵呵,继续。。。
12 发表于 2007-01-24 05:28 ·  中国 广东 广州 海珠区 电信
初级用户
积分 68
发帖 32
注册 2007-01-24 04:00
UID 77490
性别 男
来自 广东潮州
状态 离线
建议多看几个实例就会觉得很容易明白了.

还得注意现在的选择命令跟以前老DOS的不同.
13 发表于 2007-02-08 09:55 ·  中国 山东 德州 电信
初级用户
积分 24
发帖 11
注册 2007-01-13 05:26
UID 76357
性别 男
状态 离线
讲得很细,这样我们菜鸟才能明白,谢谢0401兄的耐心和细心!
14 发表于 2007-02-08 11:18 ·  中国 吉林 四平 联通
高级用户
★★★
积分 859
发帖 413
注册 2006-08-14 21:55
UID 60532
状态 离线
关于set的解释,5楼讲得很详细,也有例子。
好看一些
15 发表于 2007-02-14 06:09 ·  中国 河南 郑州 联通
初级用户
积分 88
发帖 40
注册 2006-12-26 07:32
UID 74591
性别 男
状态 离线
5楼的讲的很明白啊,我们菜鸟一看就明白
论坛跳转: