中国DOS联盟

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

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

中国DOS联盟论坛
现在时间是 2026-08-02 20:33
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » set与IF命令的问题!!! 查看 1,148 回复 9
楼 主 set与IF命令的问题!!! 发表于 2006-12-27 04:44 ·  中国 河北 邯郸 联通
新手上路
积分 10
发帖 4
注册 2006-12-27 03:20
19年会员
UID 74659
性别 男
状态 离线
各位大大!!小弟有礼了!!

set "STARTPRGNAME=%STARTPRGNAME:"=%"
语句中:"=%"表示什么意思?

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

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

谢谢各位大大帮忙!!!小弟在线等。


──────────────── 版务记录 ────────────────
执行:namejm
修改后标题:set与IF命令的问题!!!
说明:因修改后的标题仍然过于模糊,不便于论坛的搜索和管理,
  请在三日内继续修改标题。

──────────────── 版务记录 ────────────────



[ Last edited by namejm on 2006-12-26 at 04:33 PM ]
2 发表于 2006-12-27 04:52 ·  中国 广东 电信
荣誉版主
★★★★
batch fan
积分 5,226
发帖 1,737
注册 2006-03-10 00:38
20年会员
UID 51697
来自 成都
状态 离线
  1、那是字符串替换语句,在这里是把所有的引号置换为空,也就是去掉所有的引号。用法在 set 帮助里有,请看:

环境变量替换已如下增强:

%PATH:str1=str2%

会扩展 PATH 环境变量,用 "str2" 代替扩展结果中的每个 "str1"。
要有效地从扩展结果中删除所有的 "str1","str2" 可以是空的。
"str1" 可以以星号打头;在这种情况下,"str1" 会从扩展结果的
开始到 str1 剩余部分第一次出现的地方,都一直保持相配。

  2、if 中的 /i 参数表示比较字符串的时候,忽略大小写;

  3、和1是一样的道理。
本帖最近评分记录 (共 1 条) 点击查看详情
评分人分数时间
muya05 +1 2006-12-27 11:48
尺有所短,寸有所长,学好CMD没商量。
考虑问题复杂化,解决问题简洁化。
3 发表于 2006-12-27 05:03 ·  中国 河北 邯郸 联通
新手上路
积分 10
发帖 4
注册 2006-12-27 03:20
19年会员
UID 74659
性别 男
状态 离线
谢谢大大帮忙,小弟感激中……
4 发表于 2006-12-27 05:06 ·  中国 河北 邯郸 联通
新手上路
积分 10
发帖 4
注册 2006-12-27 03:20
19年会员
UID 74659
性别 男
状态 离线
能否再清楚的解释一下1和3,我有些看不明白。
5 发表于 2006-12-27 05:15 ·  中国 河北 廊坊 三河市 移动
金牌会员
★★★★
积分 2,725
发帖 1,160
注册 2006-09-23 12:00
19年会员
UID 63486
来自 河北廊坊
状态 离线
比如:abcd 将c替换为x

代码:
@echo off
set str=abcd
set str=%str:c=x%
echo %str%
pause>nul
本帖最近评分记录 (共 1 条) 点击查看详情
评分人分数时间
muya05 +1 2006-12-27 11:46
三人行,必有吾师焉。 学然后知不足,教然后知困,然后能自强也。
6 发表于 2006-12-27 05:18 ·  中国 河北 邯郸 联通
新手上路
积分 10
发帖 4
注册 2006-12-27 03:20
19年会员
UID 74659
性别 男
状态 离线
我个人理解,是不是这样的?
1 中%STARTPRGNAME:"=% 的意义为用空字符串代替了STARTPRGNAME环境变量中所有的:字符。
3 中%STARTPRGNAME:.bat=% 的意义是用空字符串代替了STARTPRGNAME环境变量中所有的.字符
我说的对不对?请各位大大指正。
7 发表于 2006-12-27 05:30 ·  中国 广西 南宁 联通
金牌会员
★★★★
积分 3,687
发帖 1,467
注册 2005-08-08 12:00
20年会员
UID 44210
状态 离线
1、不是:字符,而是"字符
2、不是.字符,而是.bat字符

:字符类似“我说:”的:字符用法
8 发表于 2006-12-27 05:45 ·  中国 河北 廊坊 三河市 移动
金牌会员
★★★★
积分 2,725
发帖 1,160
注册 2006-09-23 12:00
19年会员
UID 63486
来自 河北廊坊
状态 离线
原来楼主没看我的代码
三人行,必有吾师焉。 学然后知不足,教然后知困,然后能自强也。
9 呵呵 锐目 发表于 2006-12-27 05:52 ·  新西兰 奥克兰大区 奥克兰 Microsoft
高级用户
★★
积分 783
发帖 268
注册 2006-12-26 17:18
19年会员
UID 74627
性别 男
状态 离线
Originally posted by zh159 at 2006-12-26 04:30 PM:
1、不是:字符,而是"字符
2、不是.字符,而是.bat字符

:字符类似“我说:”的:字符用法
10 发表于 2006-12-27 11:45 ·  中国 陕西 延安 联通
初级用户
积分 58
发帖 22
注册 2006-12-07 00:25
19年会员
UID 72763
性别 男
状态 离线
看了namejm兄的解说和ccwan兄的代码才知道set原来还可以这样用,
PF!

[ Last edited by muya05 on 2006-12-26 at 10:47 PM ]
论坛跳转: