本文介绍了批处理脚本改编与以下代码的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个带有以下代码的批处理文件:

I have a Batch file with the following code:

@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;WERT2;WERT3;WERT4;WERT5;WERT6;3;

输出:

TEST0;TEST1;WERT1;WERT2;WERT3;WERT4;WERT5;WERT6;3;
TEST0;TEST1;WERT1;WERT2;WERT3;WERT4;WERT5;WERT6;3;
TEST0;TEST1;WERT1;WERT2;WERT3;WERT4;WERT5;WERT6;3;

现在,我希望获得以下输出:

Now I would like to have the following Output:

TEST0;TEST1;WERT1;;;;;;3;
TEST0;TEST1;WERT2;;;;;;3;
TEST0;TEST1;WERT3;;;;;;3;

因为 %% i 中的值为 3 .

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

If in %%i the value is 4 the output should be:

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

推荐答案

@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;

这篇关于批处理脚本改编与以下代码的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

10-23 08:40