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=!迈瓦尔\橙色
。