我想制作一个通用的批处理脚本,它将读取将包含固定宽度平面文件源的各种宽度/列长度的模式文件,并最终根据列长度创建目标csv文件。通用文本转换器
实施例:
Schema.txt
COL1,5
COL2,2
COL3,4
COL4,3
COL5,6
所以上面schema.txt文件包含列list.It还包含每个字段的宽度。我们的来源将始终是固定宽度的平面文件。我们的目标是将其转换为csv。
Source1.txt
11111223333444555555
11111223333444555555
Target1.txt
11111,22,3333,444,555555
11111,22,3333,444,555555
Source2.txt
11111 333344466666
11111223333 66666
Target2.txt
11111,,3333,444,66666
11111,22,333,,66666
,所以它应该能够处理空间和空白,就像我们在第二个源文件中看到的那样。 模式应该是一个动态文件,如果我们提供结构,bat文件将创建一个与来自源的结构完全相同的csv。最终目标文件应该具有从模式文件中获取的头文件。 请帮忙。下面
我的本次代码给出:
echo off
setlocal EnableDelayedExpansion
echo a,b,c final.txt
rem replace the €€€ string with any unused one
set "fooString=€€€"
for /f "tokens=1 delims=;" %%i in (source.txt) do (
set "x=%%i"
for /f "tokens=1,2 delims=," %%a in (config.txt) do (
call SET "VARraw=!x:~%%a,%%b!%fooString%"
rem replaced with respect to the OP's comment: for %%p in (!VARraw!) do (
for /F "tokens=*" %%p in ("!VARraw!") do (
set "rav=%%p"
set "var=!rav:%fooString%=!"
echo/|set /p "=!var!,"
) final.txt
)
)
目前的config.txt包含
0,9
9,3
12,11
23,7
30,1
但我想修改it.Want只保留字段名称和宽度。不是起始位置和宽度。
现有代码的问题是,它将结果打印在一行中,但是我想在每行结束后打开\ n。
到目前为止您尝试过什么?请分享您的代码!我们不会为你做你的工作,我们在这里帮助你解决你遇到的特定编程问题;看看也[这里](http://stackoverflow.com/help/how-to-ask)... – aschipfl
@aschipfl我喜欢这是如何开始与“我想要”,然后只是告诉他想要什么我们做。 –
@ DennisvanGils:_“我希望你为我制作一个通用的批处理脚本......”是的,我认为这将是对这个问题的更现实的描述。 **';-)'** – Aacini