以下for循环结果与我的机器上的预期不符。 我无法找出我做错了什么。
请在下面找到check.bat和softwareList.txt的代码清单。 softwareList.txt也位于check.bat所在的同一目录中。
check.bat
@echo off
call:updateVariables check
goto:eof
:updateVariables
set operation=%~1
echo %operation%
setlocal enabledelayedexpansion
for /F "tokens=*" %%A in (softwareList.txt) do (
set bundle=%%A
echo a. command %%A %operation%
echo b. command %bundle% %operation%
)
endlocal
goto:eof
以下是 softwareList.txt : -
maven
tomcat
derby
java
eclipse
预期结果: -
check
a. command maven check
b. command maven check
a. command tomcat check
b. command tomcat check
a. command derby check
b. command derby check
a. command java check
b. command java check
a. command eclipse check
b. command eclipse check
实际结果: -
check
a. command maven check
b. command java check
a. command tomcat check
b. command java check
a. command derby check
b. command java check
a. command java check
b. command java check
a. command eclipse check
b. command java check
另外,如何从for循环结果迭代中修剪尾部和前导空格? 我在for循环中使用下面的命令,但这不起作用: -
set A=%A:~0,-1%
答案 0 :(得分:0)
@echo off
call:updateVariables check
goto:eof
:updateVariables
set operation=%~1
echo %operation%
setlocal enabledelayedexpansion
for /F "tokens=*" %%A in (softwareList.txt) do (
set bundle=%%A
echo a. command %%A %operation%
echo b. command !bundle! %operation%
)
endlocal
goto:eof
在延迟展开时,定义变量并在括号内访问时,应使用!
代替%