中国DOS联盟

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

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

中国DOS联盟论坛
现在时间是 2026-08-09 04:16
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » [求助]代码中的if not "!var:~-1!"=="="?? 查看 942 回复 2
楼 主 [求助]代码中的if not "!var:~-1!"=="="?? 发表于 2007-07-26 14:18 ·  中国 河南 漯河 联通
新手上路
积分 16
发帖 5
注册 2007-06-15 18:59
19年会员
UID 91441
性别 男
状态 离线
看到一段获取开机启动项的p代码:

@echo off
setlocal enabledelayedexpansion

for /f "skip=4 tokens=1* delims=:" %%i in ('reg query HKLM\Software\Microsoft\Windows\CurrentVersion\Run') do (
set str=%%i
set var=%%j
set "var=!var:"=!"
if not "!var:~-1!"=="=" echo !str:~-1!:!var!
)
pause>nul

问题:
set "var=!var:"=!"这句代码的意思是去掉变量值中的引号,"!var:~-1!"是表示取变量var的值最后一位字符,关键是这句 if not "!var:~-1!"=="=" 中的"="表示的什么值?
假设启动项里这个程序:C:\WINDOWS\system32\IME\TINTLGNT\TINTSETP.EXE ;!var:~-1!"取的值
将是字母E,但是执行上面的代码能完整的显示出启动项程序的路径,是不是"="在起的作用??实在想不明白!!请高手赐教~~

既然楼下的说看不明白,从新编辑一下,我感觉我要问的问题已经表达的很明白了!

[ Last edited by wwggd on 2007-7-26 at 08:42 PM ]
2 发表于 2007-07-26 16:59 ·  中国 浙江 杭州 电信
银牌会员
★★★
积分 1,928
发帖 931
注册 2007-01-06 11:46
19年会员
UID 75624
性别 男
状态 离线
楼主啊,不知道怎么说你好。中文也太那个了

断句也不会啊?

教别人如何理解你的意思?
3 发表于 2008-07-22 15:22 ·  中国 广西 南宁 西乡塘区 电信
初级用户
★★
积分 176
发帖 78
注册 2007-04-15 10:53
19年会员
UID 85268
性别 男
状态 离线
这个是在实践中总结出来的吧?
你在set "var=!var:"=!"后加个ECHO,会看到结果是有以【"=】结尾的行的。
论坛跳转: