gpt4 book ai didi

windows - 子字符串操作中的延迟变量扩展

转载 作者:可可西里 更新时间:2023-11-01 11:27:20 25 4
gpt4 key购买 nike

SETLOCAL EnableDelayedExpansion

SET str=123456789abcdefgh

FOR /l %%x IN (1, 1, 10) DO (

SET /a intLength=10-%%x

SET result=!str:~-%%x!
ECHO "Works as intended: " !result!

SET result=!str:~-intLength!
ECHO "Does NOT work as intended: " !result!
)

endlocal

最佳答案

您使用的是文字字符串 intLength 而不是 %intLength% 变量。

由于您是在 for 循环内初始化变量,因此您将不得不使用此变量名称的 !intLength! 变体。不幸的是,由于您已经使用感叹号从 str 中获取子字符串,因此您不能在该行中也使用它们来获取 intLength 的值,因为您然后基本上有一个变量 !str:~!,一个批处理 真的 不会喜欢的无关字符串,以及一个 !!.

您可以通过另一个 for 循环运行 !intLength! 并改用 %%var 变量来解决这个问题,因为您已经证明这是可行的。

@echo off
setlocal EnableDelayedExpansion

set str=123456789abcdefgh

for /l %%x in (1, 1, 10) DO (

set /a intLength=10-%%x

SET result=!str:~-%%x!
echo Works as intended: !result!

for /f %%A in ("!intLength!") do SET result=!str:~-%%A!
echo Now works as intended: !result!
echo.
)

endlocal

关于windows - 子字符串操作中的延迟变量扩展,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31909019/

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