Board logo

标题: 读取文本中的系统环境变量引用为什么不成功 [打印本页]

作者: maddog     时间: 2007-7-4 02:06    标题: 读取文本中的系统环境变量引用为什么不成功

我先用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 ]
作者: qinbuer     时间: 2007-7-4 02:20
这是全部代码?有启用延缓环境变量扩展名了吗?
作者: maddog     时间: 2007-7-4 12:53
如何启用延缓环境变量扩展名?
作者: maddog     时间: 2007-7-4 13:21
楼上说的是延缓环境变量吧?我已经在注册表里打开了
作者: HAT     时间: 2007-7-4 16:32
@echo off
把这行注释掉
看看运行过程就知道了
我猜(仅仅是猜)是因为%SystemRoot%已经变为C:\WINDOWS
所以后面无法被正确判断为存在