Жирный последний ряд - с использованием командного файла - PullRequest
0 голосов
/ 22 февраля 2019

Я запускаю пакетный скрипт для преобразования 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
::******************************************************************************************************

1 Ответ

0 голосов
/ 22 февраля 2019

Я согласен с Compo, что использование PowerShell является более дальновидным подходом,
, но, поскольку пакет, кажется, работает хорошо, реализуйте предложение monotero:

  • количество строк в файле .csvс помощью find /V /C "" <"%~1"
  • проанализируйте это число и сохраните в переменной Lines
  • , измените среднюю часть подсистемы :CreateHTMLTable с помощью Линий вниз,
  • если (оставшиеся) Линиибольше 0 продолжить как прежде
  • , если не вставить теги <B>, </B>.

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

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...