我想解决简单问题 - 循环重复时保存到不同的文件。我知道我得到的结果是因为我在做>> 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
)
答案 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"
)