每次重复循环到不同文件WIN BATCH的结果

时间:2015-07-12 20:59:21

标签: windows batch-file

我想解决简单问题 - 循环重复时保存到不同的文件。我知道我得到的结果是因为我在做>> file.txt 我将所有的结果都归结为一个文件。每次将结果保存到不同的文件会很棒(并且可以通过变量中的文本命名这个文件。但是有些错误。它保存了最后一次循环迭代的结果。

    @echo off
setlocal ENABLEDELAYEDEXPANSION
    set vidx=0
    for /F "tokens=1* delims=;" %%A in (list2.csv) do (
        SET /A vidx=!vidx! + 1
        set var!vidx!=%%A
        rxrepl -f temp.txt -s "xNAMEx" -r "%%A">file___%var!vidx!%.txt
    )

3 个答案:

答案 0 :(得分:1)

尝试替换它 file___%var!vidx!%.txt

file___!var!!vidx!!!.txt

答案 1 :(得分:1)

您不需要任何变量来获得您想要的结果。此外,如果您从不引用变量*,则"tokens=1*"%%B中无用。 "tokens=1"是默认值。所以你需要的只是:

for /F "delims=;" %%A in (list2.csv) do rxrepl -f temp.txt -s "xNAMEx" -r "%%A">"file___%%A.txt"

如果你真的想要建立一个"数组"对于var.N值,您可以使用FINDSTR为每一行添加一个递增的数字(行号)。

for /F "tokens=1,2 delims=:;" %%A in ('findstr /n "^" list2.csv') do (
  set "var.%%A=%%B"
  set "var.cnt=%%A"
  rxrepl -f temp.txt -s "xNAMEx" -r "%%B">"file___%%B.txt"
)

:: Display the "array" values
for /l %%N in (1 1 %var.cnt%) do echo var.%%N=!var.%%N!

答案 2 :(得分:0)

仅使用...>"file___%%~A.txt"而不是错误的>file___%var!vidx!%.txt

@ECHO OFF
SETLOCAL enableextensions enabledelayedexpansion
set vidx=0
for /F "tokens=1* delims=;" %%A in (list2.csv) do (
    SET /A "vidx+=1"
    set "var!vidx!=%%~A"
    echo loopvar %%%% A=%%~A "file___%%~A.txt"
    rem next line shows how to treat array-like names 
    call set "filenamepart=%%var!vidx!%%" 
    echo filenamepart=!filenamepart! "file___!filenamepart!.txt"
    rem rxrepl -f temp.txt -s "xNAMEx" -r "%%A">"file___%%~A.txt"
)