0

我正在尝试编写一个 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 enableextensionsand !fileName!(而是使用%fileName%

搜索解决方案后启用延迟扩展。但仍然无法得到确切的错误是什么。

正在使用的操作系统版本也是Windows 7 64 bit

请帮我指出错误。

谢谢!

4

1 回答 1

2

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

set "variable=value"

以避免意外的尾随空格。

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

于 2015-07-02T19:29:27.313 回答