相关疑难解决方法(0)

.bat文件中的奇怪范围问题

我正在写一个简单的.bat文件,我遇到了一些奇怪的行为.有几个地方我必须做一个简单的if/else,但块内的代码似乎没有正常工作.

这是一个演示错误的简单案例:

@echo off

set MODE=FOOBAR

if "%~1"=="" (
  set MODE=all
  echo mode: %MODE%
) else (
  set MODE=%~1
  echo mode: %MODE%
)
echo mode: %MODE%
Run Code Online (Sandbox Code Playgroud)

我得到的输出是:

C:\>test.bat test
mode: FOOBAR
mode: test
Run Code Online (Sandbox Code Playgroud)

为什么代码块中的回声没有得到变量的新值?在我写的实际代码中,我需要构建一些变量并在if/else的范围内引用它们.我可以将其切换为使用标签和gotos而不是if/else,但这似乎并不那么干净.

是什么导致这种行为?代码块中的变量是否存在某种限制?

scope batch-file

17
推荐指数
1
解决办法
7038
查看次数

标签 统计

batch-file ×1

scope ×1