我有一个文本文件,格式如下:
name1:surname1
name2:surname2
name3:surname3
等等。
我需要在窗口批处理脚本中编写for循环并分配给2个变量
name=name1
surname=surname1
等等。像(这是错误的)
for /F "tokens=*" %%row in (myfile.txt) do (
for /F "tokens=1* delims=:" %%u in ("%row%") do (
....
)
)
有什么建议吗?
答案 0 :(得分:2)
for /F "tokens=*" %%r in (myfile.txt) do (
for /F "tokens=1* delims=:" %%u in ("%%r") do (
....
)
)
或
for /F "tokens=1* delims=:" %%u in (myfile.txt) do (
....
)
实时元变量r
和u
仅限于单个(区分大小写)字母字符。
答案 1 :(得分:1)
你真的不需要两个嵌套循环。
然而,您可能需要的是延迟变量扩展。
@echo off
setlocal enabledelayedexpansion
for /f "tokens=1,2 delims=:" %%u in (myfile.txt) do (
set "name=%%u"
set "surname=%%v"
echo !surname!, !name!
)
为我输出:
surname1, name1
surname2, name2
surname3, name3
延迟变量扩展允许您将单字母循环变量(在这种情况下为u
和v
)分配给实变量,并在其余变量中使用它们通过使用!
代替%
来访问它们。
答案 2 :(得分:0)
@echo off
setlocal EnableDelayedExpansion
for /F "tokens=1,2 delims=:" %%u in (myfile.txt) do (
set name=%%u
set surname=%%v
echo name=!name!
echo surname=!surname!
)
输出:
name=name1
surname=surname1
name=name2
surname=surname2
name=name3
surname=surname3