Variables 用于设置变量的命令无效
我正在运行这个命令,我不明白为什么它不起作用Variables 用于设置变量的命令无效,variables,batch-file,for-loop,Variables,Batch File,For Loop,我正在运行这个命令,我不明白为什么它不起作用 setlocal EnableDelayedExpansion for %%a in (harry-boy) do set %%a:-== echo %harry% pause 这就是我得到的结果- e:\6\1>setlocal EnableDelayedExpansion e:\6\1>for %a in (harry-boy) do set %a:-== e:\6\1>set harry-boy:-== e:\6
setlocal EnableDelayedExpansion
for %%a in (harry-boy) do set %%a:-==
echo %harry%
pause
这就是我得到的结果-
e:\6\1>setlocal EnableDelayedExpansion
e:\6\1>for %a in (harry-boy) do set %a:-==
e:\6\1>set harry-boy:-==
e:\6\1>echo
ECHO is on.
e:\6\1>pause
Press any key to continue . . .
我将连字符改为等号,然后在上面运行set命令。我希望看到变量“harry”=“boy”
这里有一个简单的测试-
set file=play=here.mkv
set %file:==-%
echo %file%
pause
我明白了-
set file=play=here.mkv
==-%
was unexpected at this time.
set %file:==-%
我想我会得到file=play-here.mkv的新内容。好的,我看到这使得语法错误,set命令停止。那么如何将=改为连字符?轻松解决:
for /f "tokens=1,2 delims=-" %%a in ("harry-boy") do set %%a=%%b
Echo %harry%
这应该是你的工作。但是它只对引号中的一个
-
起作用。SET
将第一个=
右侧的值分配给左侧命名的环境变量
因此,在这两种情况下,您将为名为harry boy:-
的变量赋值=
您可以通过执行
set harr
它将显示从字符串替换格式开始的任何变量:
%var:old-string=new-string%
不适用于可替换参数的,仅适用于批处理变量。对于您的示例,使用变量的等效方法是:
set a=harry-boy
set %a:-==%
echo %harry%
pause
输出:
C:>set a=harry-boy
C:>set harry=boy
C:>echo boy
boy
C:>pause
Press any key to continue . . .
set命令中的语法错误,不能以这种方式使用循环变量名。它必须是一个变量名。您已经添加了更多信息-替换功能无法替换=
符号。是的,这很有道理。我正在尝试一些基本的测试,例如您的测试,但我看不到出现错误。请查看我的原始帖子。如果您编写tokens=1,*
而不是tokens=1,2
(%%b
将是一个包含该行其余部分的字符串),那么它将处理更多的-