我想製作一個通用的批處理腳本,它將讀取將包含固定寬度平面文件源的各種寬度/列長度的模式文件,並最終根據列長度創建目標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