中国DOS联盟论坛

中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --
联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum
游客 | 登录 | 注册 | 会员 | 搜索 | 中国DOS联盟
中国DOS联盟论坛
现在时间是 2026-09-15 12:18
47,812 主题排行 / 349,917 发帖 / 今日 0 篇 / 48,268 会员排行
DOS批处理 & 脚本技术(批处理室) » 关于set命令的几点疑惑(已解决)
可打印版本  9,827 / 44
第1楼 hangyug 发表于 2007-01-21 00:38
初级用户 发帖 43 积分 99
关于set命令的几点疑惑(已解决)
学习批处理,学到了set命令,一头雾水,在论坛里搜索了一下,是有一些set方面的,但是看了之后还是不太懂,自带的帮助也看了,感觉还是不太懂。哪位有好一点的set的教程啊?发个连接也可以,先谢过了。

[ Last edited by namejm on 2007-1-20 at 08:07 PM ]
第2楼 ccwan 发表于 2007-01-21 00:43
金牌会员 发帖 1,160 积分 2,725 来自 河北廊坊
哪里不懂提出来啊。总有人能解答的吧?
第3楼 timlee 发表于 2007-01-21 00:48
新手上路 发帖 8 积分 16
说出来我们也好学习学习.
第4楼 hangyug 发表于 2007-01-21 01:16
初级用户 发帖 43 积分 99
问题都很菜,希望大家有点耐心。。。呵。。
问题一:
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有什么区别?
第5楼 0401 发表于 2007-01-21 03:13
中级用户 发帖 88 积分 435
HoHo~我比较适合回答这种基础题目

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

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

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

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

打字好累~~

[ Last edited by 0401 on 2007-1-21 at 03:18 AM ]
第6楼 hangyug 发表于 2007-01-21 04:46
初级用户 发帖 43 积分 99
谢谢楼上的耐心回答,辛苦你了。。。问题一我懂了,不过,你可能没看明白我的问题二是什么。
我再说一遍吧。
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楼 tao0610 发表于 2007-01-21 05:19
高级用户 发帖 218 积分 579
两大秘笈:

1.善用搜索

2.多看帮助信息

.....
第8楼 0401 发表于 2007-01-21 06:25
中级用户 发帖 88 积分 435
to 楼主:

我在回答中就看明白你的问题二了,只是你没看懂我的回答。
那我也再说一遍吧。
说之前我想告诉你,如果你可以自己动手试的话,我想你已经知道为什么了。
我之前的回答希望你能再认真看下,我只是再这里再举个例子。

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

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

[ Last edited by 0401 on 2007-1-21 at 06:30 AM ]
第9楼 hangyug 发表于 2007-01-21 08:04
初级用户 发帖 43 积分 99
谢谢0401兄,原来你把我的问题和我所引用帖子中的提问都给回答了,再次感谢你的回复。。。
第10楼 kafen 发表于 2007-01-21 09:00
初级用户 发帖 43 积分 97
我也要感谢这么热心且耐心的朋友!
第11楼 shorterz 发表于 2007-01-23 11:36
初级用户 发帖 11 积分 25
有学了不少,呵呵,继续。。。
第12楼 g4rr 发表于 2007-01-24 05:28
初级用户 发帖 32 积分 68 来自 广东潮州
建议多看几个实例就会觉得很容易明白了.

还得注意现在的选择命令跟以前老DOS的不同.
第13楼 sjjhhx 发表于 2007-02-08 09:55
初级用户 发帖 11 积分 24
讲得很细,这样我们菜鸟才能明白,谢谢0401兄的耐心和细心!
第14楼 anqing 发表于 2007-02-08 11:18
高级用户 发帖 413 积分 859
关于set的解释,5楼讲得很详细,也有例子。
好看一些
第15楼 juventusryp 发表于 2007-02-14 06:09
初级用户 发帖 40 积分 88
5楼的讲的很明白啊,我们菜鸟一看就明白
1 2 3  下一页
[ 联系联盟系统管理团队 - 中国DOS联盟 - 标准版 ]
Sponsored by ifanr Inc | © 2001–2023