中国DOS联盟

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

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

中国DOS联盟论坛
现在时间是 2026-07-05 01:27
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » 读取文本中的系统环境变量引用为什么不成功 查看 753 回复 4
楼 主 读取文本中的系统环境变量引用为什么不成功 发表于 2007-07-04 02:06 ·  中国 北京 联通
新手上路
积分 10
发帖 4
注册 2007-07-04 00:45
19年会员
UID 93070
性别 男
状态 离线
我先用REG QUERY把注册表里的path项读出,然后想判断其中哪个路径不存在就删除,把其他的写回至path项。

我已经用FOR语句把上述字串分离如下:
%SystemRoot%\system32
%SystemRoot%
%SystemRoot%\System32\Wbem
C:\fortest假设这就是想删除的项
C:\Program Files\Intel\Wireless\Bin

但此时面临的问题让我实在困惑——
我用if exist %%i来判断,前面三个有系统变量(%SystemRoot%)的值无法被正确判断为存在。

这是什么道理?又如何解决?

测试用代码如下——

@echo off

set pathleft=
set pathnew=

FOR /F "tokens=2*" %%i IN (PATHQUERY.DAT) DO set pathleft=%%j

:_loop
IF "!pathleft!"=="" goto _end
FOR /F "tokens=1* delims=; usebackq" %%i IN ('!pathleft!') DO (set pathleft=%%j&& if exist "%%i" (echo %%i) else echo error)
goto _loop

:_end

set pathnew=
set pathleft=

前面三行全显示ERROR,第四行被如期删除,第五行正常留存

c0b30528c45b38fe 怎么样就可以解密出来?


─────────────────── 版务记录 ────────────────────
执行:lxmxn
标题:求助一个批处理问题!
说明:因标题表述过于模糊,不便于论坛的搜索和管理,请在三日内修改标题,否则扣除2点积分
参考:http://www.cn-dos.net/forum/viewthread.php?tid=7326&fpage=1
   http://community.csdn.net/IndexPage/SmartQuestion.aspx
─────────────────── 版务记录 ────────────────────


[ Last edited by bjsh on 2007-7-31 at 10:06 AM ]
2 发表于 2007-07-04 02:20 ·  中国 广东 佛山 电信
高级用户
★★
我思故我在
积分 512
发帖 228
注册 2007-01-21 10:31
19年会员
UID 77225
性别 男
状态 离线
这是全部代码?有启用延缓环境变量扩展名了吗?
我确实是只菜鸟,而且这里X人太多,所以我不敢装X。谁要再说我装X,我就XXOO他。
3 发表于 2007-07-04 12:53 ·  中国 北京 联通
新手上路
积分 10
发帖 4
注册 2007-07-04 00:45
19年会员
UID 93070
性别 男
状态 离线
如何启用延缓环境变量扩展名?
4 发表于 2007-07-04 13:21 ·  中国 北京 联通
新手上路
积分 10
发帖 4
注册 2007-07-04 00:45
19年会员
UID 93070
性别 男
状态 离线
楼上说的是延缓环境变量吧?我已经在注册表里打开了
5 发表于 2007-07-04 16:32 ·  中国 上海 联通
版主
★★★★★
积分 9,023
发帖 5,017
注册 2007-05-31 19:39
19年会员
UID 89899
性别 男
状态 离线
@echo off
把这行注释掉
看看运行过程就知道了
我猜(仅仅是猜)是因为%SystemRoot%已经变为C:\WINDOWS
所以后面无法被正确判断为存在
论坛跳转: