gpt4 book ai didi

batch-file - cmd.exe 批处理文件中意外处理 "variables"

转载 作者:行者123 更新时间:2023-12-03 16:34:38 24 4
gpt4 key购买 nike

我有一个包含以下内容的 xyz.bat 文件:

@set val=one
@if "%val%" equ "one" (
@set val=yes
echo val after setting it: %val%
) else (
@set val=no
)
@echo %val%

cmd.exe 中运行它会打印

val after setting it: one
yes

但我预料

val after setting it: yes
yes

这是为什么呢?有没有办法让它按照我的想法行事?

最佳答案

() 之间的所有内容都被解析为一行(使用 & 连接命令) – 以及 shell expands %var% variables at parse time

set /?的输出进一步解释了这一点。

在最近的版本中:

@echo off
setlocal enabledelayedexpansion
set var=one
if a equ a (
set var=two
echo immediate expansion: %var%
echo delayed expansion: !var!
)
echo after: %var%

...但这就是疯狂。例如,如果您想在延迟扩展模式下回显 !,则必须 escape it twice :

echo hi^^!

(这会被解析两次,第一次减少为 echo hi^!。)甚至不让我开始使用 ^ 内部变量。


考虑一种不太笨拙的语言(Perl、Python、PowerShell、PHP、JScript、C#...)

关于batch-file - cmd.exe 批处理文件中意外处理 "variables",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4908595/

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