标题: for语句问题,变量无法赋值
[打印本页]
作者: wenqs27
时间: 2009-8-2 09:31
标题: for语句问题,变量无法赋值
for /f %%a in ('dir /b %~dp0') do (
set haha=%%a
echo %haha%)
pause
以上代码运行结果:
ECHO 处于打开状态。
ECHO 处于打开状态。
ECHO 处于打开状态。
ECHO 处于打开状态。
ECHO 处于打开状态。
ECHO 处于打开状态。
。。。
显然是haha变量没得到值。为何呢?
[
Last edited by wenqs27 on 2009-8-2 at 09:45 ]
作者: wenqs27
时间: 2009-8-2 10:08
这怎么可能,想不通?是我计算机有问题?
作者: netbenton
时间: 2009-8-2 11:14
%haha%号的变量在预处理时已经进行扩展了,也就是在for还没有执行以前
把echo %haha%改为:
call echo %%haha%%
或开变量延迟用
echo !haha!
作者: tireless
时间: 2009-8-2 11:21
要开启变量延迟:
@echo off
setlocal enabledelayedexpansion
for /f %%a in ('dir /b %~dp0') do (
set haha=%%a
echo !haha!
)
pause
什么情况下该使用变量延迟?
http://www.cn-dos.net/forum/viewthread.php?tid=20733
----------
如果 %%a 中含有英文感叹号“!”:
@echo off
for /f %%a in ('dir /b %~dp0') do (
set haha=%%a
setlocal enabledelayedexpansion
echo !haha!
endlocal
)
pause
简析环境变量和变量延迟特殊字符以及中介法的微妙关系
http://www.cn-dos.net/forum/viewthread.php?tid=30884
作者: wenqs27
时间: 2009-8-2 11:25
。。。好低级的错误。
看来还是太懒,平时不怎么编写代码。总是小处犯错。
明天就走了,开学了。。。暂别联盟一年。。。呵呵。
谢谢兄的回复,你的帖子我看过几篇,很不错的~~
联盟的新人总算没辜负前辈的付出(will兄,无奈何版主等),感谢所有给过我帮助的人,尤其是精神上的鼓励,谢谢你们!
作者: wenqs27
时间: 2009-8-2 11:26
谢谢4楼的!(回帖真快啊)