fluluk
Goto Top

Batch - An beliebiger Stelle in Textdatei Text einfügen

Hallo,

ich habe eine Textdatei, die mir durch ein Skript ausgegeben wurde, diese würde ich mir gerne per E-Mail im HTM Format zuschicken lassen, da sie ohne Tabelle ziemlich verschoben wird.

der Inhalt dieser Datei sieht folgendermaßen aus:
Verzeich.: 5 0 5 0 0 0
Dateien: 40 0 40 0 0 0
Bytes: 3.626 t 0 3.626 t 0 0 0

das Ganze ist im Editor sehr gut Formatiert. hinter Spalte 21, 31, 41, 51 usw. sollten also die jeweilige Tabellenspalte zu ende sein.
Hier durch eine Pipe gekennzeichnet:

Verzeich.: 5| 0| 5| 0| 0| 0|
Dateien: 40| 0| 40| 0| 0| 0|
Bytes: 3.626 t| 0| 3.626 t| 0| 0| 0|

Spalte 21, 31, 41, 51 usw. bezieht sich in dem Fall also auf den Buchstabe der jeweiligen Zeile. Da sich dieser immer an der selben stelle befindet, habe ich gehofft ich kann ein Batch schreiben, welches mir an eben diesen stellen ein: </th><th> einfügt bzw. am Anfang ein <tr><th> und am Ende ein </tr>, sodass ich eine eine saubere Tabelle erhalte.
Die kann ich ja dann als HTM-File abspeichern und schon habe ich das, was ich benötige.

 
<table>
<tr><th>Verzeich.:</th><th>5</th><th>0</th><th>5</th><th>0</th><th>0</th><th>0</th></tr>
<tr><th>Dateien:</th><th>40</th><th>0</th><th>40</th><th>0</th><th>0</th><th>0</th></tr>
<tr><th>Bytes:</th><th>3.626 t</th><th>0</th><th>3.626 t</th><th>0</th><th>0</th><th>0</th></tr>
</table>

bzw:
Verzeich.: 5 0 5 0 0 0
Dateien: 40 0 40 0 0 0
Bytes: 3.626 t 0 3.626 t 0 0 0

gibt es also eine Möglichkeit per Batch an diesen Positionen den HTML Code einzufügen oder generell eine Möglichkeit so etwas automatisiert umzusetzen?
ich möchte dafür kein Extra Programm einsetzen.

gruß fluluk

Content-Key: 218682

Url: https://administrator.de/contentid/218682

Ausgedruckt am: 28.03.2024 um 19:03 Uhr

Mitglied: Endoro
Endoro 07.10.2013 um 19:20:31 Uhr
Goto Top
Hi, versuch das:
@ECHO OFF &SETLOCAL 
for /f "delims=" %%a in (file.txt) do (  
	set "line=%%a"  
	setlocal enabledelayedexpansion
	set "line=!line: t=@t!"  
	set "line=<tr><th>!line: =</th><th>!</th></tr>"  
	set "line=!line:@= !"  
	>>"file.html" echo(!line!  
	endlocal
)
lg.
Mitglied: fluluk
fluluk 08.10.2013 um 08:35:14 Uhr
Goto Top
Hallo,
wenn ich das richtig verstehe werden alle Leerzeichen hier durch ein </th><th> ersetzt.
Dadurch stimmen die Spalten Leider nicht.

ich habe hier mal die Leerzeichen durch einen Punkt ersetzt, dass man erkennt wie der Test Formatiert ist:

Verzeich.:.........5.........0.........5.........0.........0.........0
..Dateien:........40.........0........40.........0.........0.........0
Bytes:...3.626.t.........0...3.626.t.........0.........0.........0

hier ist hinter Zeichen 11 jeweils die Bezeichnung (Verzeich. / Dateien / Bytes) zuende und hinter Zeichen 21 die erste Spalte. werden die Zahlen größer, werden es natürlich auch weniger Leerzeichen.
Mitglied: Endoro
Endoro 08.10.2013 aktualisiert um 15:16:51 Uhr
Goto Top
Hi, verstehe, es geht um konstante Spaltenbreiten:
@ECHO OFF &SETLOCAL 
set /a width=10
(for /f "delims=" %%a in (file) do call:doit "%%~a")>"file.html"  
goto:eof

:doit
setlocal enabledelayedexpansion
set "line=%~1"   
for /f "delims=:" %%i in ('"(@echo(%line%&@echo()|findstr /o $"') do set /a linelen=%%i-2  
set /a cnt=linelen / width, rst=linelen %% width
if %rst% equ 0 set /a cnt-=1
for /l %%a in (0,1,%cnt%) do (
	set /a ptr=%%a * width
	if %%a equ %cnt% (
		call set "out=!out!%%line:~!ptr!,%width%%%"  
	) else (
		call set "out=!out!%%line:~!ptr!,%width%%%</th><th>"  
	)
)
set "out=<tr><th>!out!</th></tr>"  
echo(!out!
endlocal
exit /b
lg.