Batch file 使用以下代码进行批处理脚本自适应

Batch file 使用以下代码进行批处理脚本自适应,batch-file,Batch File,我有一个批处理文件,代码如下: @echo off set "quelle=C:\Users\User-01\quelle_001.txt" set "ziel=C:\Users\User-01\ziel_001.csv" >"%ziel%" (for /f "usebackq tokens=1-9 delims=;" %%a in ("%quelle%") DO for /L %%z in (1 1 %%i) do echo %%a;%%b;%%c;%%d;%%e;%%f;%%g;%%h

我有一个批处理文件,代码如下:

@echo off
set "quelle=C:\Users\User-01\quelle_001.txt"
set "ziel=C:\Users\User-01\ziel_001.csv"
>"%ziel%" (for /f "usebackq tokens=1-9 delims=;" %%a in ("%quelle%") DO for /L %%z in (1 1 %%i) do echo %%a;%%b;%%c;%%d;%%e;%%f;%%g;%%h;%%i;)
输入:

输出:

TEST0;TEST1;WERT1;;;;;;3;
TEST0;TEST1;WERT2;;;;;;3;
TEST0;TEST1;WERT3;;;;;;3;
TEST0;TEST1;WERTa;;;;;;4;
TEST0;TEST1;WERTb;;;;;;4;
TEST0;TEST1;WERTc;;;;;;4;
TEST0;TEST1;WERTd;;;;;;4;
现在,我希望得到以下输出:

TEST0;TEST1;WERT1;;;;;;3;
TEST0;TEST1;WERT2;;;;;;3;
TEST0;TEST1;WERT3;;;;;;3;
因为%%i中的值为3

如果%%i中的值为4,则输出应为:

TEST0;TEST1;WERT1;;;;;;4;
TEST0;TEST1;WERT2;;;;;;4;
TEST0;TEST1;WERT3;;;;;;4;
TEST0;TEST1;WERT4;;;;;;4;
等等


我已经删除了For/L循环,因为它的用途不清楚,而且%%z值没有被使用。它似乎唯一能做的事情就是根据在第一个循环中检索到的%%i令牌的值,使同一行被多次回显。

这似乎可以实现您的示例所显示的功能,这是您的意思吗

@设置quelle=C:\Users\User-01\quelle_001.txt @设置ziel=C:\Users\User-01\ziel_001.csv @对于/F UseBackQ令牌=1-3,9 Delims=;%%G In%quelle%Do@For/F Delims=0123456789%%K In%%I Do@For/L%%L In 1%%J Do@Echo%%G;%H、 %%K%%L;;;;%%J、 >%齐尔% 输入:

TEST0;TEST1;WERT1;WERT2;WERT3;WERT4;WERT5;WERT6;3;
TEST0;TEST1;WERTa;WERTb;WERTc;WERTd;WERTe;WERTf;4;
输出:

TEST0;TEST1;WERT1;;;;;;3;
TEST0;TEST1;WERT2;;;;;;3;
TEST0;TEST1;WERT3;;;;;;3;
TEST0;TEST1;WERTa;;;;;;4;
TEST0;TEST1;WERTb;;;;;;4;
TEST0;TEST1;WERTc;;;;;;4;
TEST0;TEST1;WERTd;;;;;;4;

为什么不删除要排除的令牌?%%d、 %%e、 %%f、 %%g、 %%H那我就没有新的输出了。我现在看到我错过了什么。您希望在每行显示从%%c开始的代币,并为代币%%d、%%e等打印新行,对吗?Wolldecke?这就是为什么我喜欢拼写检查:D
@echo off
SETLOCAL EnableDelayedExpansion

set "quelle=t.csv"
set "ziel=t1.csv"
>"%ziel%" (
  for /f "usebackq tokens=1,2,* delims=;" %%a in ("%quelle%") DO (
    set "i=0"
    for %%k in (%%c) do set "nr=%%k"
    for %%m in (%%c) do (
      set /a i+=1
      if !i! leq !nr! echo %%a;%%b;%%m;;;;;;!nr!;
    )
  )
)
type "%ziel%"
TEST0;TEST1;WERT1;WERT2;WERT3;WERT4;WERT5;WERT6;3;
TEST0;TEST1;WERTa;WERTb;WERTc;WERTd;WERTe;WERTf;4;
TEST0;TEST1;WERT1;;;;;;3;
TEST0;TEST1;WERT2;;;;;;3;
TEST0;TEST1;WERT3;;;;;;3;
TEST0;TEST1;WERTa;;;;;;4;
TEST0;TEST1;WERTb;;;;;;4;
TEST0;TEST1;WERTc;;;;;;4;
TEST0;TEST1;WERTd;;;;;;4;