我正在尝试编写一个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
请帮我指出错误。
谢谢!
答案 0 :(得分:2)
set fileName = 2gen
将名为filename<space>
的变量设置为值<space>2gen
。摆脱空间。更好的是,使用这种推荐的语法:
set "variable=value"
以避免意外的尾随空格。
(当然你可以使用echo !filename !
...)