2017-06-12 111 views
1

我有以下格式的文本文件:的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 (
.... 
) 
) 

任何建议?

回答

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
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限于单个(区分大小写)字母字符。

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 
相关问题