Ren*_*ger 2 variables cmd batch-file
我有一个xyz.bat包含以下内容的文件:
@set val=one
@if "%val%" equ "one" (
@set val=yes
echo val after setting it: %val%
) else (
@set val=no
)
@echo %val%
Run Code Online (Sandbox Code Playgroud)
在cmd.exe打印中运行它
val after setting it: one
yes
Run Code Online (Sandbox Code Playgroud)
但我期待
val after setting it: yes
yes
Run Code Online (Sandbox Code Playgroud)
为什么是这样?有没有办法让它按照我的想法行事?
介于(和之间的所有东西都)被解析为一行(加入命令&) - 并且shell 在分析时扩展%var%变量
输出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%
Run Code Online (Sandbox Code Playgroud)
......但那种方式就是疯狂.例如,如果要!在延迟扩展模式下回显,则必须将其转义两次:
echo hi^^!
Run Code Online (Sandbox Code Playgroud)
(这会被解析两次,减少到echo hi^!第一次.)甚至不让我开始使用^内部变量.
考虑一种不太流行的语言(Perl,Python,PowerShell,PHP,JScript,C#,......)
| 归档时间: |
|
| 查看次数: |
228 次 |
| 最近记录: |