gpt4 book ai didi

Windows 批处理 Do 在这个时候出乎意料

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

任何人都可以在这里找到为什么我收到错误消息“此时执行意外”吗?

echo
for /F "tokens=*" %%A in (myfile.txt) do (
S:
cd \WRO_Regression_results\%%A

FOR /F %%i IN ('dir /b /ad-h /o-d') DO (
SET b=%%i
GOTO :found
)
echo No subfolder found
goto :eof

echo Most recent subfolder: %b%
cd %b%
dir

find /c "O K" tooling.report
if %errorlevel% equ 1 goto notfound
echo found
goto done

:notfound
echo notfound
goto done

:done
)

pause

最佳答案

我认为问题在于您试图在 FOR 循环中定义标签。这可能是不允许的(尽管我知道没有关于 CMD 语法的明确引用)。这是您的脚本的一个稍微修改的版本(定义了 :found)。

echo
for /F "tokens=*" %%A in (myfile.txt) do (
S:
cd \WRO_Regression_results\%%A

FOR /F %%i IN ('dir /b /ad-h /o-d') DO (
SET b=%%i
GOTO :found
)
echo No subfolder found
goto :eof

echo Most recent subfolder: %b%
cd %b%
dir
)

:found
find /c "O K" tooling.report
if %errorlevel% equ 1 goto notfound
echo found
goto done

:notfound
echo notfound
goto done

:done


pause

如果您希望 found 和 notfound 对循环中的每个项目都执行,您可以这样做。延迟扩展对于访问在 FOR 循环中发生变化的变量是必要的。 CALL 可用于将标签视为子例程。 AFAIK,没有办法跳出 CMD 中的 FOR 循环,因此 FOUND 变量是一个标记值,可防止 b 在循环的第一次迭代后被设置。如果您描述脚本的预期行为,我会更好地了解如何实现预期目标。

SETLOCAL ENABLEDELAYEDEXPANSION

echo for /F "tokens=*" %%A in (myfile.txt) do (
S:
cd \WRO_Regression_results\%%A

SET FOUND=0
FOR /F %%i IN ('dir /b /ad-h /o-d') DO (
IF NOT !FOUND!==1 (
SET b=%%i
SET FOUND=1
)
)
IF !FOUND!==1 (CALL :found) ELSE (CALL :notfound)

echo Most recent subfolder: %b%
cd %b%
dir )

:found
find /c "O K" tooling.report
if %errorlevel% equ 1 goto notfound
echo found
EXIT /B

:notfound
echo notfound
EXIT /B


:done


pause

关于Windows 批处理 Do 在这个时候出乎意料,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26715977/

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