这是我用来从CSV导出数据并写入.trn扩展名文件的脚本。 代码执行csv文件数据某一列的权利,我的意思是说,如果列没有索引A到Z,代码执行正确,但当后面的Z列意味着AA,AB等数据出错。 代码你可以看到这里:
批处理脚本
@echo off set "line1=^%%a,cf,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,y,,,,,,,,,,,,," set "line2=^%%a,$,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,y,qbconid,,,^%%b,,,,,,,,," ....................................................................................... ....................................................................................... set "line26=^%%a,$,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,y,txtstate,,,^%%z,,,,,,,,," set "line27=^%%a,$,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,y,pmtper,,,^%%aa,,,,,,,,," set "line28=^%%a,#,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,y,minfee,^%%ab,,,,,,,,," (for /F "tokens=1-28 skip=1 delims=," %%a in ('type "NewPortfolios.csv"') do ( echo %line1% echo %line2% ............ ............ echo %line26% echo %line27% echo %line28% )) >"file.trn"
而csv文件的数据是:
ABC AA AB $portcode $qbconId $name ....... $pmtper #minfee asingh12 123456789 Ajay Singh....... ajay 123
输出是:
asingh12,cf,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,y,,,,,,,,,,,,, asingh12,$,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,y,qbconid,,,123456789,,,,,,,,, ................................................................................... asingh12,$,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,y,pmtper,,,asingh12a,,,,,,,,, asingh12,#,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,y,minfee,asingh12b,,,,,,,,,
在上面的两行中可以看到列值出错了。 正如你所看到的CSV数据,最后2列值应该是ajay和123,但它是asingh12a和asingh12b。这些是a和b的值。它应该来自AA和AB。
**EDITED HERE**
嗨Aacini – 希望你做得很好。 我再次遇到.csv文件转换为.txt文件的问题。 现在这个时候从.csv和Quotes(“)得到一个数据,这就是批处理脚本运行不正常的原因,请从.csv中以.txt格式find示例数据 – ”_portcode“,”_qbconId“,”_ name“ “_address”, “_城市”, “_状态”, “_拉链”, “_ bmeth”, “_ ffee”, “_ brak1”, “_ rate0”, “_ brak2”, “_率1”, “_ brak3”, “_率2”,“_ brak4 ”, “_率3”, “_ brak5”, “_ rate4”, “_ rate5”, “_冰川”, “_ custact”, “_保pipe”, “_ qbmgrid”, “_ refby”, “_ txstate”, “_ pmtper”, “_ minfee”
“schorira”“001c000000WtrL1AAJ”“9232 Collegeview Cir”“Bloomington”“MN”“55437”“T”“1000000.0” “Robert M. Schofield IRA Rollover”,“Schwab”,“JTB”,“Patrick Stephens”,“MN”,“Quarterly”,“0”。 以前在.csv数据中没有行情。 请帮我一下 如果你想从我身边得到更多的澄清,请让我知道。 我感谢你的帮助提前。
嗨Acini,
直到现在,我们正在等待你的回复。 请帮我一下
编辑 :我修复了一些细节,现在应该正确运行。
编辑#2 :微妙的错误修正,并添加一个例子
@echo off set "letter=abcdefghijklmnopqrstuvwxyz" set "line1=!a!,cf,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,y,,,,,,,,,,,,," set "line2=!a!,$,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,y,qbconid,,,!b!,,,,,,,,," set "line26=!a!,$,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,y,txtstate,,,!z!,,,,,,,,," set "line27=!a!,$,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,y,pmtper,,,!aa!,,,,,,,,," set "line28=!a!,#,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,y,minfee,!ab!,,,,,,,,," setlocal EnableDelayedExpansion (for /F "usebackq skip=1 delims=" %%a in ("NewPortfolios.csv") do ( set i1=0 set "line=%%a" for %%b in ("!line:,=" "!") do for /F "tokens=1,2" %%i in ("!i1! !i2!") do ( if %%i lss 26 ( set var=!letter:~%%i,1! ) else ( set var=a!letter:~%%j,1! ) set "!var!=%%~b! set /A i1+=1, i2=i1-26 ) echo %line1% echo %line2% echo %line26% echo %line27% echo %line28% )) > file.trn
上一个批处理程序最多可以输出52列(a..z aa..az),但是增加这个范围非常容易。 有了这个输入数据:
A, B, C, D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z, AA, AB $portcode,$qbconId,$name, D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z,$pmtper,#minfee asingh12,123456789,Ajay Singh,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z,ajay,123
输出是:
asingh12,cf,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,y,,,,,,,,,,,,, asingh12,$,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,y,qbconid,,,123456789,,,,,,,,, asingh12,$,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,y,txtstate,,,Z,,,,,,,,, asingh12,$,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,y,pmtper,,,ajay,,,,,,,,, asingh12,#,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,y,minfee,123,,,,,,,,,