Windows批处理文件:循环行和拆分字符串

时间:2017-06-12 17:36:03

标签: windows loops batch-file cmd

我有一个文本文件,格式如下:

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 (
 .... 
 )
)

有什么建议吗?

3 个答案:

答案 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 (
.... 
)

实时元变量ru仅限于单个(区分大小写)字母字符。

答案 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

延迟变量扩展允许您将单字母循环变量(在这种情况下为uv)分配给实变量,并在其余变量中使用它们通过使用!代替%来访问它们。

答案 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