批量FOR / D输出不可用的值?

时间:2016-04-04 19:25:06

标签: loops batch-file

当我在批处理文件中运行它时:

for /d %%i in ("%SystemDrive%\Users\*") do (
  set myvar=%%i\apple
  set myvar=%myvar%\orange
)

我的输出如下:

set myvar=C:\Users\Joe\apple
 set myvar=\orange

set myvar=C:\Users\Bob\apple
 set myvar=\orange

...

我希望看到set myvar=C:\Users\Joe\apple\orange。为什么myvar似乎有一个空值,即使你可以看到它被设置为一个?

2 个答案:

答案 0 :(得分:0)

根据评论,这会产生预期结果:

setlocal ENABLEDELAYEDEXPANSION
for /d %%i in ("%SystemDrive%\Users\*") do (
  set myvar=%%i\apple
  set myvar=!myvar!\orange
)

答案 1 :(得分:0)

另一种解决方案是使用call。例如:

for /d %%i in ("%SystemDrive%\Users\*") do call :MyFunction
exit
:MyFunction
set myvar=%%i\apple
set myvar=%myvar%\orange