Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Loops 批处理/D输出不可用的值?_Loops_Batch File - Fatal编程技术网

Loops 批处理/D输出不可用的值?

Loops 批处理/D输出不可用的值?,loops,batch-file,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 ... 我希望看到设置myvar=C:\Users\Joe

在批处理文件中运行此操作时:

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

...

我希望看到
设置myvar=C:\Users\Joe\apple\orange
。为什么
myvar
显示为空值,即使您可以看到它被设置为空值?

根据注释,这将生成预期结果:

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

另一个解决方案是使用
调用
。例如:

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

这是典型的延迟扩展问题。请参阅。@bgoldst我尝试添加
setlocal ENABLEDELAYEDEXPANSION
,但没有帮助。批处理文件需要什么样的外观才能输出我所期望的内容?您还必须在延迟扩展上使用感叹号,而不是百分比。因此,第二个赋值必须更改为
set myvar=!迈瓦尔\橙色