for-loop - 变量仅在 FOR 循环结束时设置,然后在下一次运行时挥之不去
问题描述
我有一个file.txt
看起来像这样的文件:
string1a,string1b
string2a,string2b
string3a,string3b
我正在尝试运行以下批处理文件:
@echo off
For /F "usebackq tokens=1,2 delims=," %%a in ("file.txt") do (
echo The output is:
echo %%a
echo %%b
set var_1=%%a
echo %var_1%
echo %var_1:~6%
set var_2=%%b
echo %var_2%
echo %var_2:~6%
)
当我第一次运行它时,结果是:
The output is:
string1a
string1b
ECHO is off.
~6
ECHO is off.
~6
The output is:
string2a
string2b
ECHO is off.
~6
ECHO is off.
~6
The output is:
string3a
string3b
ECHO is off.
~6
ECHO is off.
~6
当我第二次运行它时,结果是:
The output is:
string1a
string1b
string3a
3a
string3b
3b
The output is:
string2a
string2b
string3a
3a
string3b
3b
The output is:
string3a
string3b
string3a
3a
string3b
3b
如果我将最后一行更改file.txt
为:
string3x,string3y
并再次运行批处理文件,结果是:
The output is:
string1a
string1b
string3a
3a
string3b
3b
The output is:
string2a
string2b
string3a
3a
string3b
3b
The output is:
string3x
string3y
string3a
3a
string3b
3b
如果我再次运行批处理文件,结果是:
The output is:
string1a
string1b
string3x
3x
string3y
3y
The output is:
string2a
string2b
string3x
3x
string3y
3y
The output is:
string3x
string3y
string3x
3x
string3y
3y
谁能解释这里发生了什么?我首先期待的结果是:
The output is:
string1a
string1b
string1a
1a
string1b
1b
The output is:
string2a
string2b
string2a
2a
string2b
2b
The output is:
string3a
string3b
string3a
3a
string3b
3b
不知何故,该变量似乎直到FOR
循环的第三次迭代才被设置,然后它在批处理文件的下一次运行中徘徊。我试图在每次迭代中设置var_1
和在当前迭代中的值。var_2
%%a
%%b
解决方案
解决方案似乎在于启用延迟扩展,因此批处理文件应该是:
@echo off
setlocal EnableDelayedExpansion
For /F "usebackq tokens=1,2 delims=," %%a in ("file.txt") do (
echo The output is:
echo %%a
echo %%b
set var_1=%%a
echo !var_1!
echo !var_1:~6!
set var_2=%%b
echo !var_2!
echo !var_2:~6!
)
推荐阅读
- uwp - 将键盘交互焦点设置为 MenuFlyoutItem
- mongodb - 如何将集合中的嵌套字段映射到未嵌套格式的结构?
- ios - 有没有办法为 UITabBarController 很长的标题激活溢出指示器?
- python - 使用正则表达式通过 xpath 查找元素
- solr - 一旦我们在 prowords.txt 中添加关键字 apple,KeywordMarkerFilterFactory 就不会返回任何值
- excel - 返回 #VALUE 的公共函数
- git - 在 github 和 CDN 上管理发布
- java - 如何在 Java 中将 JSON 转换为 XML,同时保持与 JSON 中相同的 XML 属性顺序
- java - Android 中的埃塞俄比亚日历
- python - 如何比较列表和矩阵的元素并消除空格