在 if 循环中分配变量:Windows Bat 脚本

Assigning a variable inside if loop : Windows Bat script

我正在尝试编写一个 bat 脚本并遇到以下问题。

下面是处理问题的片段。

setlocal enabledelayedexpansion enableextensions
@echo off
@echo:
echo Select an option:
echo *****************
@echo:
echo 1) process 2gen files
@echo:
echo 2) process 3gen files
@echo:
set /p option=Enter option number : %=%

set fileName=nil
echo %option%
if %option% == 1 (
set fileName = 2gen
echo !fileName!
)
echo !fileName!

这个bat脚本的输出结果如下:

Select an option:
*****************

1) process 2gen files

2) process 3gen files

Enter option number : 1
1
nil
nil

我期待 fileName 的回显具有值 2gen 但它仍在打印 nil

在我的第一次尝试中,我没有使用 setlocal enabledelayedexpansion enableextensions!fileName!(而是使用 %fileName%

搜索解决方案后启用延迟扩展。但还是没搞清楚具体错误是什么。

同时使用的 OS 版本是 Windows 7 64 bit

请帮我指出错误。

谢谢!

set fileName = 2gen 将名为 filename<space> 的变量设置为值 <space>2gen。去掉空格。更好的是,使用这个推荐的语法:

set "variable=value"

以避免意外的尾随空格。

(当然你可以使用echo !filename !...)