Textblock kopieren
Liebe User,
ich möchte gerne den Header einer .htm Datei kopieren. Also alle Zeilen vom Anfang einer Textdatei bis zum Suchwort "</head>" in eine andere Datei kopieren. Leider unterstützt z.B. "split" kein Aufteilen von Dateien bis "Suchwort". Oder kennt Ihr noch andere Tools oder evtl. eine Batch-Lösung? Das Problem ist nur dass sich z.B. die Sonderzeichen ">" und "<", die ja in HTML-Code vorkommen, nicht so ohne weiteres in Batch verarbeiten lassen (echo <HEAD> >> out.txt).
Dankeschön fielmahls, Gruss & Kuss, die Haselnuss~
<°)))><
ich möchte gerne den Header einer .htm Datei kopieren. Also alle Zeilen vom Anfang einer Textdatei bis zum Suchwort "</head>" in eine andere Datei kopieren. Leider unterstützt z.B. "split" kein Aufteilen von Dateien bis "Suchwort". Oder kennt Ihr noch andere Tools oder evtl. eine Batch-Lösung? Das Problem ist nur dass sich z.B. die Sonderzeichen ">" und "<", die ja in HTML-Code vorkommen, nicht so ohne weiteres in Batch verarbeiten lassen (echo <HEAD> >> out.txt).
Dankeschön fielmahls, Gruss & Kuss, die Haselnuss~
<°)))><
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 189084
Url: https://administrator.de/contentid/189084
Ausgedruckt am: 26.11.2024 um 04:11 Uhr
10 Kommentare
Neuester Kommentar
Hallo EvaEden und willkommen im Forum!
- daher im Zweifelsfall eher VBS:
Grüße
bastla
Problem ist nur dass sich z.B. die Sonderzeichen ">" und "<", die ja in HTML-Code vorkommen, nicht so ohne weiteres in Batch verarbeiten lassen (echo <HEAD> >> out.txt).
Eigentlich nicht - aber Zeilen, die eine ungerade Anzahl von Anführungszeichen enthalten, lassen den folgenden Batch entgleisen (zumindest, wenn sie sich im <Head>-Teil befinden):@echo off & setlocal
set "Ein=D:\Deine.html"
set "Aus=D:\Header.html"
set "Bis=</head>"
set "Suche=%Bis:<=\<%"
set "Suche=%Suche:>=\>%"
del "%Aus%" 2>nul
set "Fertig="
for /f "tokens=1* delims=:" %%i in ('findstr /n "^" "%Ein%"') do if not defined Fertig (
set "Zeile=%%j"
call :ProcessLine
)
goto :eof
:ProcessLine
echo "%Zeile%"|findstr /i "%Suche%">nul || goto :Ausgabe
set "Fertig=True"
call set "Teil=%%Zeile:*%Bis%=%%"
call set "Zeile=%%Zeile:%Teil%=%%"
:Ausgabe
setlocal enabledelayedexpansion
>>"%Aus%" echo(!Zeile!
endlocal
goto :eof
Ein = "D:\Deine.html"
Aus = "D:\Header.html"
Bis = "</head>"
Set fso = CreateObject("Scripting.FileSystemObject")
T = fso.OpenTextFile(Ein).ReadAll
P = InStr(1, T, Bis, vbTextCompare)
If P = 0 Then
WScript.Echo "'" & Bis & "' konnte nicht gefunden werden!"
WScript.Quit 1
End If
fso.CreateTextFile(Aus).Write Left(T, P - 1 + Len(Bis))
bastla
moin bastla,
wenn der Baztch nicht grätschen soll dann eventuell so:
[Edit]
Code angepasst
[/Edit]
Gruß Phil
wenn der Baztch nicht grätschen soll dann eventuell so:
@echo off
setlocal disabledelayedexpansion
set "Ein=D:\Deine.html"
set "Aus=D:\Header.html"
set "Bis=</head>"
find /n /v "" <"%Ein%">"%temp%\tmpln.txt"
set "Fertig ="
3>"%Aus%" (
for /f "usebackqtokens=1* delims=]" %%i in ("%temp%\tmpln.txt") do if not defined Fertig (
set "Zeile=%%j"
call :ProcessLine
)
)
goto :eof
:ProcessLine
(cmd /von /c echo !Zeile!)|find /i "%Bis%">nul || goto :Ausgabe
set "Fertig=True"
setlocal enabledelayedexpansion
set "Teil=!Zeile:*%Bis%=!"
if defined Teil set "Zeile=!Zeile:%Teil%=!"
:Ausgabe
if %os% neq !os! setlocal enabledelayedexpansion
>&3 echo(!Zeile!
goto :eof
[Edit]
Code angepasst
[/Edit]
Gruß Phil
Hallo EvaEden!
Grüße
bastla
Nur leider scheitert das meist schon am ersten "<!DOCTYPE...".
Das kann ich mir jedenfalls hinsichtlich der VBS-Variante überhaupt nicht vorstellen, und was den Batch angeht, sollte es eigentlich, wie oben angemerkt, auch nur dann nicht funktionieren, wenn eine Zeile eine ungerade Anzahl von Anführungszeichen enthält ...Grüße
bastla
moin,
da muss ich bastla recht geben.
also ich kann das mit dem geraden oder ungeraden Anführungsziechen gar nicht nachvollziehen.
Es kommt immer die Zeile Korrekt raus, egal wieviele bzw wo die Sonderzeichen stecken.
selbst als oneliner im CMD Fenster gehts richtig.
Den Code habe ich oben angepasst.
Gruß Phil
da muss ich bastla recht geben.
also ich kann das mit dem geraden oder ungeraden Anführungsziechen gar nicht nachvollziehen.
Es kommt immer die Zeile Korrekt raus, egal wieviele bzw wo die Sonderzeichen stecken.
selbst als oneliner im CMD Fenster gehts richtig.
Den Code habe ich oben angepasst.
Gruß Phil
Hallo zusammen!
Gruß Dieter
Leider unterstützt z.B. "split" kein Aufteilen von Dateien bis "Suchwort".
Stellt sich eventuell die Frage, welches Textformat die Html-Dateien haben (Ansi, Unicode, UTFx..)?Gruß Dieter
moin,
Dann hab ich mal einen kleinen Split per Batch hier, damit der HTML als ganzes wiederkömmt.
^
Gruß Phil
Zitat von @EvaEden:
Deswegen war ich auf der Suche nach externen (GNU-)Tools, die mir eben den gesamten Block bis Suchwort herauskopieren o.ä.
Deswegen war ich auf der Suche nach externen (GNU-)Tools, die mir eben den gesamten Block bis Suchwort herauskopieren o.ä.
Dann hab ich mal einen kleinen Split per Batch hier, damit der HTML als ganzes wiederkömmt.
@echo off
setlocal disabledelayedexpansion
set "Ein=D:\Deine.html"
set "Aus=D:\Header.html"
set "Bis=</head>"
call :In <"%Ein%" >"%aus%"
goto :eof
:In
set /p "Zeile="
(cmd /von /c echo(!Zeile!)|find "%Bis%" >nul ||(cmd /von /c "<nul set /p "=!Zeile!" "& goto :in )
setlocal enabledelayedexpansion
set "Zeile=!Zeile:%Bis%=%Bis%\:!"
:End
if !Zeile:~-1! neq \ set "Zeile=!Zeile:~0,-1!" &goto :end
echo !Zeile:\=!
exit /b
Gruß Phil