2017-06-12 179 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 
相關問題