gpt4 book ai didi

variables - 批处理 : FOR/R doesn't work with a variable in the path

转载 作者:行者123 更新时间:2023-12-04 15:46:29 24 4
gpt4 key购买 nike

一个例子:

FOR %%i IN (3) DO (
ECHO %%i
FOR /R "C:\backup\server%%i\temp" %%? IN (*.bak) DO (
REM some code...
)
)
ECHO 的结果: 3 .

第二个结果 FOR : 代码未执行 .

但与:
FOR %%i IN (3) DO (
ECHO %%i
FOR /R "C:\backup\server3\temp" %%? IN (*.bak) DO (
REM some code...
)
)
ECHO 的结果: 3 .

第二个结果 FOR : 代码执行 .

任何的想法?

最佳答案

原始代码不起作用的原因是因为在解析 FOR 时必须知道 FOR/R 选项的目录,但直到 才会扩展 %%i 变量。后 FOR 语句已经被解析。 adarshr 建议存在同样的问题 - !suffix!直到解析 FOR 语句后才展开。

GG 的答案是一个非常好的可行的解决方法。也许可以通过 PUSHD 和最后的 POPD 而不是 CD 来改进。但只有在需要时。

我能想到的解决问题的唯一其他方法是这样的

@echo off
FOR %%i IN (3) DO call :innerLoop %%i
exit /b

:innerLoop
FOR /R "C:\backup\server%1\temp" %%? IN (*.bak) DO (
REM some code...
)
exit /b

但我不喜欢使用 CALL,除非我必须这样做,因为它效率低下。我喜欢 CD 解决方案。

关于variables - 批处理 : FOR/R doesn't work with a variable in the path,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8588927/

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