gpt4 book ai didi

windows - 嵌套批处理 for 循环

转载 作者:可可西里 更新时间:2023-11-01 12:15:35 28 4
gpt4 key购买 nike

下面的嵌套 for 循环让我抓狂(在 Windows 7 上):

@echo off
SetLocal EnableDelayedExpansion

set TESTDIRS=fast mid slow
set TD=src\test\resources\testsuite

for %%d in (%TESTDIRS%) do (
set CTD=%TD%\%%d
echo CTD: !CTD!
REM Echos the expected path
echo CTD: %CTD%
REM Echos nothing -- understandable

for /R !CTD! %%f in (*.fs) do (echo %%f)
REM Echos nothing -- why?
for /R src\test\resources\testsuite\fast %%f in (*.fs) do (echo %%f)
REM Echos expected files
)

我尝试了各种解决方案,包括禁用 DelayedExpansion、调用语句和诸如此类的东西,但我从未使内部循环起作用。我知道我可以通过子例程调用替换内部循环,但必须有一种方法可以使其与嵌套循环一起工作。

最佳答案

只是给出一个有效的嵌套循环的例子:

@echo off
SetLocal

set B=alpha beta gamma
set A=eins zwo

FOR %%b in (%B%) do (
FOR %%a in (%A% %%b) DO (
echo %%b -^> %%a
)
)

输出(至少在 Windows 7 上)是

alpha -> eins
alpha -> zwo
alpha -> alpha
beta -> eins
beta -> zwo
beta -> beta
gamma -> eins
gamma -> zwo
gamma -> gamma

这支持了 jeb 的观察,即如果变量出现在括号内(即使没有延迟扩展),循环中的变量扩展也会起作用。

关于windows - 嵌套批处理 for 循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4334209/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com