的Windows批处理文件:环行数和拆分字符串
问题描述:
我有以下格式的文本文件:的Windows批处理文件:环行数和拆分字符串
name1:surname1
name2:surname2
name3:surname3
等。
我需要写一个在窗口批处理脚本循环并分配到2个变量
等。类似的东西(这是错误的)
for /F "tokens=*" %%row in (myfile.txt) do (
for /F "tokens=1* delims=:" %%u in ("%row%") do (
....
)
)
任何建议?
答
你并不真的需要两个嵌套循环。
但是,您可能需要的是延迟变量扩展。
@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
)分配给实际变量和使用他们在循环的其余部分,通过!
而不是%
访问它们。
答
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
限于单个(区分大小写)字母字符。
答
@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