大佬教程收集整理的这篇文章主要介绍了Windows Batch读取文件并将行解析为标记和变量,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
AA8315,"United States",N777AN,"American Airlines",AAL98,B772,"Boeing 777-223",AAL,"2013-06-11 23:30:47.923","2013-06-12 00:01:14.459"
我的批处理文件:
set THEDATE=2013-06-12 set THEDATABASE=c:\Kinetic\BaseStation\Basestation.sqb set THECSVFILE=c:\Flights.csv set THEOUTPUTFILE=c:\FlightsNew.csv set THISLINE="" if exist %THECSVFILE% del %THECSVFILE% if exist %THEOUTPUTFILE% del %THEOUTPUTFILE% :: allow time for the csv file to be deleted timeout /t 2 /nobreak c:\sqlite3.exe -header -csv %THEDATABASE% "SELEct Aircraft.ModeS,Aircraft.ModeSCountry as Country,Aircraft.Registration as Reg,Aircraft.Registeredowners as owner,Flights.Callsign,Aircraft.ICAOTypeCode as Type,Aircraft.Type as Model,Aircraft.operatorFlagCode as 'Op Flag',Flights.StartTime as 'First Seen',Flights.EndTime as 'Last Seen' from Aircraft INNER JOIN Flights ON (Aircraft.AircraftID=Flights.AircraftID) where Flights.EndTime like '%THEDATE% %%' order by Flights.EndTime DESc;" >> %THECSVFILE% ::allow time for the csv to be written to file timeout /t 5 /nobreak ::read %THECSVFILE% and loop through each line for /F "useBACkq tokens=* delims=" %%A in (%THECSVFILE%) do ( set the_line=%%A call :process_line ) :process_line for /F "useBACkq tokens=1,2,3,4,5,6,7,8,9,10 delims=[,]" %%1 in (%the_line%) do ( set hexcode=%%1 set country=%%2 set reg=%%3 set owner=%%4 set callsign=%%5 set planetype=%%6 set model=%%7 set opflag=%%8 set firstseen=%%9 set lastseen=%%10 set THISLINE=%hexcode%,%country%,%reg%,%owner%,%callsign%,%planetype%,%model%,%opflag%,%firstseen%,%lastseen% echo %THISLINE% > %THEOUTPUTFILE% )
(我将令牌分配给变量,因为我将在以后进行额外的验证和格式化.我需要先让这部分工作!)
执行时,脚本确实循环遍历文件的每一行,但它似乎没有将%% 1分配给变量hexcode.
执行命令的输出如下所示:
C:\>for /F "useBACkq tokens=1,]" %1 in (AA8315 "United States" N777AN "American Airlines" AAL98 B772 "Boeing 777-223" AAL "2013-06-11 23:30:47.923" "2013-06-12 00:01:14.459") do ( set hexcode=%1 set country=%2 set reg=%3 set owner=%4 set callsign=%5 set planetype=%6 set model=%7 set opflag=%8 set firstseen=%9 set lastseen=%10 set THISLINE=,N807FD,"Fedex Express",FDX1378,"@R_772_7138@ A310-324",FDX,"2013-06-12 22:56:54.639","2013-06-12 23:05:31.822" echo "" 1>c:\FlightsNew.csv ) The system cAnnot find the file AA8315.
任何帮助是极大的赞赏!
的test.txt
AA8315,"2013-06-12 00:01:14.459"
BatchFile.bat
set THECSVFILE=test.txt ::read %THECSVFILE% and loop through each line for /F "useBACkq tokens=* delims=" %%A in (%THECSVFILE%) do ( set the_line=%%A call :process_line ) goto TheEnd :process_line for /F "useBACkq tokens=1,10 delims=~" %%1 in ('%the_line:,=~%') do ( set hexcode=%%1 set country=%%2 set reg=%%3 set owner=%%4 set callsign=%%5 set planetype=%%6 set model=%%7 set opflag=%%8 set firstseen=%%9 set lastseen=%%10 set THISLINE=%hexcode%,%lastseen% echo %THISLINE% > %THEOUTPUTFILE% ) :TheEnd
注意:process_line for循环.我不得不在%the_line%周围添加单引号,因此它没有尝试将字符串解释为文件名.然后我用〜字符替换了所有逗号,并使用〜字符作为分隔符.它可能无法准确处理所有数据(如果它包含单引号或〜字符),但它确实可以使用这一条记录并让您再次朝着正确的方向前进.
以上是大佬教程为你收集整理的Windows Batch读取文件并将行解析为标记和变量全部内容,希望文章能够帮你解决Windows Batch读取文件并将行解析为标记和变量所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。