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

时间:2015-07-02 19:21:43

标签: batch-file if-statement delayedvariableexpansion

我正在尝试编写一个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的echo值为2gen,但它仍在打印nil

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

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

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

请帮我指出错误。

谢谢!

1 个答案:

答案 0 :(得分:2)

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

set "variable=value"

以避免意外的尾随空格。

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