在 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 !
...)
我正在尝试编写一个 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 !
...)