Batch file 粗体最后一行-使用批处理文件

Batch file 粗体最后一行-使用批处理文件,batch-file,Batch File,我正在运行一个批处理脚本来将CSV转换为HTML文件,但是我需要将最后一行加粗,但是我尝试了不同的方法来加粗最后一行,但是我无法让脚本确定它是否是最后一行 有什么想法吗 @echo off Title Convert csv file to HTML file Rem Set what is your delimiters in your csv file like [,] [;] [:] [|] or [tab] set "delims=," Rem Set the name of the C

我正在运行一个批处理脚本来将CSV转换为HTML文件,但是我需要将最后一行加粗,但是我尝试了不同的方法来加粗最后一行,但是我无法让脚本确定它是否是最后一行

有什么想法吗

@echo off
Title Convert csv file to HTML file
Rem Set what is your delimiters in your csv file like [,] [;] [:] [|] or [tab]
set "delims=,"
Rem Set the name of the CSV file into a variable
set "CSV_File=FinalReportFormatted.csv" 
Rem Set the name of the HTML output file from CSV file into variable
for %%a in ("%CSV_File%") do set "HTML_File=%%~na.html"
if exist "%HTML_File%" del /f /q "%HTML_File%"
Call :CreateHTMLtable "%CSV_File%" "%HTML_File%"

exit /b
::******************************************************************************************************
:CreateHTMLTable <inputfile> <outputfile>
setlocal 
(
 echo ^<!DOCTYPE HTML PUBLIC 
 echo "-//W3C//DTD HTML 4.01 Transitional//EN"
 echo  "http://www.w3.org/TR/1999/REC-html401-19991224/loose.dtd"^>
 echo ^<HTML^>
 echo ^<HEAD^>
 echo ^<META HTTP-EQUIV="Content-Type" 
 echo CONTENT="text/html; charset=utf-8"^>
 echo ^</HEAD^>
 echo ^<BODY^>
 echo ^<style type="text/css"^>
 echo .tftable {font-size:12px;color:#333333;width:100%;border-width: 1px;border-color: #bcaf91;border-collapse: collapse;}
 echo .tftable th {font-size:12px;background-color:#fff;border-width: 1px;padding: 8px;border-style: solid;border-color: #bcaf91;text-align:center;}
 echo .tftable tr {background-color:#ffffff;}
 echo .tftable td {font-size:12px;border-width: 1px;padding: 8px;border-style: solid;border-color: #bcaf91; text-align:center;}
 echo .tftable tr:hover {background-color:#ffffff;}
 echo ^</style^>
 echo ^<p^>
 echo ^<Dear All,^>
 echo ^</p^>
 echo ^<center^>^<table class="tftable" border="1"^>
)>%2

setlocal enabledelayedexpansion
for /F "delims=" %%A in ('Type "%~1"') do (
 set "var=%%A"
 set "var=!var:&=&amp;!"
 set "var=!var:<=&lt;!"
 set "var=!var:>=&gt;!"
 set "var=!var:%delims%=</td><td>!"
 echo ^<tr^>^<td^>!var!^</td^>^</tr^>
)>>%2

(
 echo ^</table^>^</center^>
 echo ^</BODY^>
 echo ^</HTML^>
)>>%2
endlocal
::******************************************************************************************************
@echo关闭
标题将csv文件转换为HTML文件
Rem设置csv文件中的分隔符,如[,][;][:][|]或[tab]
设置“delims=,”
Rem将CSV文件的名称设置为变量
设置“CSV\u File=FinalReportFormatted.CSV”
Rem将HTML输出文件的名称从CSV文件设置为变量
对于“%CSV\u File%”中的%%a,请设置“HTML\u File=%%~na.HTML”
如果存在“%HTML\u文件%”del/f/q“%HTML\u文件%”
调用:CreateThMLTable“%CSV\u文件%”“%HTML\u文件%”
退出/b
::******************************************************************************************************
:CreateHTMLTable
setlocal
(
回音^
回音^
回音^
回音^
回音^
回音^
回音^
echo.tftable{字体大小:12px;颜色:#333333;宽度:100%;边框宽度:1px;边框颜色:#bcaf91;边框折叠:折叠;}
echo.tftable th{字体大小:12px;背景色:#fff;边框宽度:1px;填充:8px;边框样式:纯色;边框颜色:#bcaf91;文本对齐:居中;}
echo.tftable tr{背景色:#ffffff;}
echo.tftable td{字体大小:12px;边框宽度:1px;填充:8px;边框样式:纯色;边框颜色:#bcaf91;文本对齐:中间;}
echo.tftable tr:hover{背景色:#ffffff;}
回音^
回音^
回音^
回音^
回音^^
)>%2
延迟扩展
对于/F“delims=“%%A in('Type“%~1”)do(
设置“var=%%A”
设置“var=!var:&=&;!”
设置“变量=!变量:=!”
设置“变量=!变量:%delims%=!”
回音^^!var^^
)>>%2
(
回音^^
回音^
回音^
)>>%2
端部
::******************************************************************************************************

我同意COMO的观点,即使用PowerShell是更具前瞻性的方法,
但由于这批产品似乎效果良好,请实施monotero的建议:

  • 使用
    find/V/C”“>%2统计.csv文件的行数
    

    您可以初步计算CSV中的行数,然后使用此数字检测最后一行。我不确定您是否感兴趣,但您是否知道Windows操作系统多年来都内置了
    PowerShell
    。使用它可以运行,
    Import CSV'FinalReportFormatted.CSV'| ConvertTo HTML>“FinalReportFormatted.HTML”
    。虽然我知道这个基本命令的输出并不完全是您想要的,但是如果您查看一下这些命令,您可能会发现,稍加修改/扩展,它将比尝试使用批处理文件更容易、更有效地执行任务。
    for /f "delims=" %%A in ('find.exe /V /C "" ^<"%~1"') Do Set Lines=%%A
    setlocal enabledelayedexpansion
    for /F "delims=" %%A in ('Type "%~1"') do (
     set "var=%%A"
     set "var=!var:&=&amp;!"
     set "var=!var:<=&lt;!"
     set "var=!var:>=&gt;!"
     Set /A Lines-=1
     if !Lines! gtr 0 (
       set "var=!var:%delims%=</td><td>!"
       echo ^<tr^>^<td^>!var!^</td^>^</tr^>
     ) else (
       set "var=!var:%delims%=</B></td><td><B>!"
       echo ^<tr^>^<td^>^<B^>!var!^</B^>^</td^>^</tr^>
     )
    )>>%2