batch script adaption with following code

感情迁移 提交于 2021-02-08 10:41:27

问题


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

Input:

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

Output:

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;

because in %%i has the value 3.

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;

etc.


回答1:


@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%"

Input:

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

Output:

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;



回答2:


@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 (
    echo %%a;%%b;%%c;;;;;;%%i;
    echo %%a;%%b;%%d;;;;;;%%i;
    echo %%a;%%b;%%e;;;;;;%%i;
    echo %%a;%%b;%%f;;;;;;%%i;
    echo %%a;%%b;%%g;;;;;;%%i;
    echo %%a;%%b;%%h;;;;;;%%i;
    )
)

I've removed the For /L loop as it's purpose isn't clear, and the %%z value does not get used. The only thing it appears to do is cause the same line to be echoed multiple times depending on the value of the %%i token retrieved in the first loop.




回答3:


This seems as if it will do what your samples show, is it what you mean?

@Set "quelle=C:\Users\User-01\quelle_001.txt"
@Set "ziel=C:\Users\User-01\ziel_001.csv"
@(For /F "UseBackQ Tokens=1-3,9 Delims=;" %%G In ("%quelle%") Do @For /F "Delims=0123456789" %%K In ("%%I") Do @For /L %%L In (1 1 %%J) Do @Echo %%G;%%H;%%K%%L;;;;;;%%J;)>"%ziel%"


来源:https://stackoverflow.com/questions/61561989/batch-script-adaption-with-following-code

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!