scottt
Goto Top

Fieles parsen und Dokumentenlinks in txt schreiben

Hallo Miteinander,
ich habe ein kleines Problem. Ich muss ca 4500 Datein auf einen String durchsuchen und hoffe das Ihr mir weiterhelfen könnt, sonst bin ich 2015 noch nicht fertig *smile*.
Ich freue mich auf eure Antworten.

MfG
scottt

Hallo Miteinander,
ich habe ein kleines Problem, ich möchte gern eine Datei mittels Batch auf den String (http://*.tpl) parsen und diesen Sting der auch mehrfach vorkommen kann in eine andere Datei schrieben. Ich muss ca. knapp 4500 Datein nach diesen Sting durchsuchen. Kann mir jemand hierbei weiterhelfen?

So sieht es bei mir zur Zeit aus:

Die Datein liegen unter: c:\temp
und heißen: 1, 2, 3, 12, 123, 1515 etc.
die Strucktur, stark vereinfacht:

c:\temp\112

<html>
<head>
<title>eine seite</title>   
<link rel="stylesheet" type="text/css" href="design/style/nav.css" />  
</head>
<body leftmargin="0" topmargin="0" marginWidth="0" marginHeight="0">  
<table>
<tr>
<td>
**[http://eine-url.de/xxx.tpl xxx]
[http://eine-andere-url.de/yyy.tpl yyy]**
</td>
</tr>
</table>
</body>
</html>


Die URL soll nun in einer anderen .txt Datei geschrieben werden. Kann mir hierbei jemand weiterhelfen?
http://eine-url.de/xxx.tpl & http://eine-andere-url.de/yyy.tpl 

Vielen Dank ich freue mich auf eure Antworten.

MfG
scottt

Content-Key: 122328

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

Printed on: April 19, 2024 at 20:04 o'clock

Member: rubberman
rubberman Aug 08, 2009 at 22:52:26 (UTC)
Goto Top
Hallo scottt,
HTML-Tags zu verarbeiten ist immer etwas tricky. Grund ist, dass Zeichen wie <, > und & auch im Batch einen Sonderstatus haben.
Aus deinem Beispiel habe ich (vielleicht fälschlicherweise) geschlossen, dass der auszugebende Link immer mit .tpl endet.
Falls das so ist, könnte es so funktionieren
@echo off &setlocal

:: anpassen:
set inputfolder=c:\temp
set outputfile=c:\text.txt

pushd "%inputfolder%"  
for /f "tokens=*" %%i in ('dir /a-d /b') do (  
 for /f "tokens=*" %%j in ('findstr /i /c:"a href=" "%%i"') do set "Zeile=%%j" &call :sub  
)
popd
pause
goto :eof

:sub
set Zeile=%Zeile:<=%
set Zeile=%Zeile:>=%
set Zeile=%Zeile:&=%
set Zeile=%Zeile:"=°%  
set Zeile=%Zeile:.tpl=°%
for /f "tokens=2 delims=°" %%k in ("%Zeile%") do echo %%k.tpl>>"%outputfile%"  
goto :eof
Member: bastla
bastla Aug 09, 2009 at 10:48:21 (UTC)
Goto Top
Hallo scott und willkommen im Forum!

Als Alternative (die ebenfalls auf der Annahme basiert, dass der Link auf ".tpl" endet) ein Batch mit ein wenig integriertem VBScript (sollte das Ganze robuster und leichter anpassbar machen):
@echo off & setlocal
set "Ordner=C:\Temp"  
set "Dateien=*."  
set "Aus=D:\Links.txt"  
set "Suche=<a href=""(http://.*\.tpl)"">.*</a>"  

set "G=%temp%\GetURL.vbs"  
>%G%  echo Set fso=CreateObject("Scripting.FileSystemObject"):T=fso.OpenTextFile(WScript.Arguments(0)).ReadAll  
>>%G% echo Set rE=New RegExp:rE.Pattern="%Suche%":rE.IgnoreCase=True:rE.Global=True:Set Ms=rE.Execute(T):If Ms.Count^<1 Then WScript.Quit  
>>%G% echo Set Aus=fso.OpenTextFile("%Aus%",8,True):For Each M In Ms:Aus.WriteLine M.SubMatches(0):Next  

if exist "%Aus%" del "%Aus%"  
for %%i in ("%Ordner%\%Dateien%") do cscript //nologo %G% "%%~fi"  
In Zeile 3 wird vorgegeben, dass nur Dateien ohne Typangabe (*.) gesucht werden sollen.

Anmerkung zum Suchstring in Zeile 5 (für ev Anpassungen):
  • Enthaltene Anführungszeichen müssen verdoppelt werden,
  • der Punkt bedeutet "ein beliebiges Zeichen" (und mit "*" dahinter "eine beliebige Anzahl beliebiger Zeichen") und muss, wenn tatsächlich das Zeichen "." gemeint ist, durch ein vorangestelltes "\" gekennzeichnet werden, und
  • der Teil, den Du als Ergebnis benötigst, ist in Klammern zu setzen

Grüße
bastla