Top-Themen

Aktuelle Themen (A bis Z)

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit

Mit Batch htm-datei auslesen string suchen und darunter Inhalt einer TXT Datei einfügen

Frage Entwicklung Batch & Shell

Mitglied: fliop1

fliop1 (Level 1) - Jetzt verbinden

28.02.2011, aktualisiert 16:03 Uhr, 4213 Aufrufe, 15 Kommentare

Hallo,

ich möchte eine *.Htm Datei mit Hilfe einer Batch durchsuchen lassen nach einem String z.B. <hier> und nach diesem String soll dann der inhalt einer Textdatei eingefügt werden z.B. 123 hier ein Beispiel:

test.htm

01.
html befehle usw 
02.
bla 
03.
blaaaa 
04.
<hier> 
05.
noch mehr html befehle  
06.
und 
07.
so 
08.
weiter
und in der test2.txt steht
01.
123
nach dem Batchdurchlauf soll die neue test.htm folgendermaßen aussehen:

01.
html befehle usw 
02.
bla 
03.
blaaaa 
04.
<hier> 
05.
123 
06.
noch mehr html befehle  
07.
und 
08.
so 
09.
weiter
Ich schaffe es normale Dateien zu durchsuchen aber leider hängt es bei den ganzen html befehlen, leider kam ich auch mit ähnlichen Lösungen nicht weiter!

Normale Dateien kann ich mit folgendem Befehlen durchsuchen, klappt auch einwandfrei - ich weiß, da HTML Codes durchsucht werden sollen, etwas verändert werden muss und die < und > besonders maskiert werden müssen.. aber ich komme nicht weiter..

01.
@echo off & Setlocal 
02.
 
03.
set "Nach=abc" 
04.
set "Datei=txt2.txt" 
05.
set "DateiTmp=Textfile.tmp" 
06.
move "%Datei%" "%DateiTmp%"  
07.
for /f "delims=" %%i in (%DateiTmp%) do (  
08.
    >>"%Datei%" echo %%i 
09.
    echo %%i|findstr /b "%Nach%">nul && >> echo more txt1.txt >> "%Datei%" 
10.
11.
pause
Kann mir bitte jemand helfen!

Danke und viel grüße!
Mitglied: Snowman25
28.02.2011 um 15:40 Uhr
Hallo fliop1 und willkommen auf Administrator.de,

wärst du bitte so freundlich und formatierst deinen Code nach dieser Formatierungshilfe?
Dann ist deine Frage schonmal wesentlich einfacher zu lesen und die User zeigen sich hilfsbereiter. Inwiefern hast du es denn bisher geschafft, normale Dateien zu durchsuchen?
Mit welchem Befehl/Programm hast du das gemacht bzw. wie sieht die Schleife dazu aus?

Wenn es nur um das massenweise ändern geht, dann wäre evtl. auch Notepad++ für deine Aufgabe zu empfehlen. Hier müsstest du alle fraglichen Dateien öffnen und die Suchen&Ersetzen-Funktion auf den gesuchten Wert loslassen. Als Austauschstring gibst du deinen Suchstring + den Inhalt von 123 an.
Geht dein Suchtext und/oder dein Einfügetext über mehrere Zeilen, so müsstest du dir noch die Regeln zu regulären Ausdrücken innerhalb des NP++ anschauen.

Gruß
Snow
Bitte warten ..
Mitglied: fliop1
28.02.2011 um 16:07 Uhr
Habe es angepasst, Notepad kommt leider nicht in Frage, es geht darum bei vielen Leuten die Signatur von Mails zu ändern - und daher wäre es besser mit einem Doppelklick die Änderung durchzuführen! Der Inhalt des einzufügenden Textes ist mehrere Zeilen lang, daher dachte ich an move txt1.txt << txt2.htm an der gesuchten Stelle!
Bitte warten ..
Mitglied: Snowman25
28.02.2011 um 16:13 Uhr
Da du nach einem Batchscript fragst und es um Emailsignaturen geht, vermute ich mal, dass ihr Outlook verwendet?
Dafür gibt es ein tolles Tool von zerbIT, gennant OutlookSignature.
Die Software ist Freeware und ermöglicht eine zentrale Verwaltung von Signaturen mit verschiedensten Outlook-Versionen.
Tut mir leid, falls du eine Batch-antwort erwartet hättest, aber ich empfehle lieber Sachen mit Hand und Fuß anstatt einmalige Lösungen.


Gruß
Snow
Bitte warten ..
Mitglied: fliop1
28.02.2011 um 16:20 Uhr
Wir verwenden Lotus Notes Und es geht tatsächlich nur um eine einmalige Änderung daher wäre es sehr praktisch!
Bitte warten ..
Mitglied: Snowman25
28.02.2011 um 16:27 Uhr
Na wenn das so ist, gibt es schon einige Fragen zu diesem Thema. z.B. hier: Batch Problem, Suchen und Ersetzen in einer ini-Datei
Bitte warten ..
Mitglied: bastla
28.02.2011 um 16:31 Uhr
Hallo fliop1 und willkommen im Forum!

Für die Bearbeitung einer HTML-Datei würde ich ja eigentlich reflexartig zu VBS greifen, aber da Du nun schon einen Batch suchst, etwa so:
01.
@echo off & setlocal 
02.
set "Nach=<hier>" 
03.
set "Datei=txt2.txt" 
04.
set "DateiEinf=txt1.txt" 
05.
 
06.
set "DateiTmp=Textfile.tmp" 
07.
move "%Datei%" "%DateiTmp%"  
08.
for /f "usebackq delims=" %%i in ("%DateiTmp%") do set "Zeile=%%i" & call :ProcessLine 
09.
pause 
10.
goto :eof 
11.
 
12.
:ProcessLine 
13.
setlocal enabledelayedexpansion 
14.
>>"%Datei%" echo !Zeile! 
15.
echo "!Zeile!"|findstr /b /L """%Nach%">nul && type "%DateiEinf%">>"%Datei%" 
16.
endlocal 
17.
goto :eof
Grüße
bastla
Bitte warten ..
Mitglied: fliop1
28.02.2011 um 16:54 Uhr
01.
set "Nach=<td class="inner">&nbsp;Germany</td>"
Besteht auch die Möglichkeit hiernach zu suchen? Nach <hier> funktioniert perfekt.. aber sobald ich nach <td class="inner">&nbsp;Germany</td> ist es vorbei und es kommen Fehler..

Aber vielen vielen Dank schon mal! Beide Sachen waren schon mal sehr hilfreich! Ich probier gleichzeitig noch rum, vllt finde ich es ja auch selber noch raus ansonsten freu ich mich auf weiter Hilfe

Grüße
Bitte warten ..
Mitglied: Snowman25
28.02.2011 um 17:03 Uhr
Du musst die Anführungszeichen und möglicherweise auch die UND-Zeichen maskieren.
Also so:
set "Nach=<td class=^"inner^">^&nbsp;Germany</td>"
Gruß
Snow
Bitte warten ..
Mitglied: bastla
28.02.2011 um 17:06 Uhr
@Snowman
Du musst die Anführungszeichen und möglicherweise auch die UND-Zeichen maskieren.
Nicht in einem Suchstring ...
Soferne es nicht unbedingt eine Suche am Zeilenanfang (also mit "/b") sein muss, könnte eigentlich
echo "!Zeile!"|findstr /L "%Nach%">nul && type "%DateiEinf%">>"%Datei%"
(als Ersatz der Zeile 15) funktionieren ... [Edit] wird's doch nicht tun [/Edit]

Grüße
bastla
Bitte warten ..
Mitglied: Snowman25
28.02.2011 um 17:08 Uhr
Zitat von bastla:
@Snowman
> Du musst die Anführungszeichen und möglicherweise auch die UND-Zeichen maskieren.
Nicht in einem Suchstring ...

Also zumindest die Anführungszeichen muss er maskieren.
Bitte warten ..
Mitglied: bastla
28.02.2011 um 17:31 Uhr
@Snowman
Anführungszeichen kannst Du nicht maskieren, sondern bestenfalls verdoppeln ...

... aber bevor sich das Ganze noch mehr in die Länge zieht, lieber gleich die VBS-Ausführung:
01.
Datei = "txt2.txt" 
02.
DateiEin = "txt1.txt" 
03.
Nach = "<td class=""inner"">&nbsp;Germany</td>" 
04.
 
05.
LNach = Len(Nach) 
06.
Set fso = CreateObject("Scripting.FileSystemObject") 
07.
Ein = fso.OpenTextFile(DateiEin).ReadAll 
08.
Inhalt = Split(fso.OpenTextFile(Datei).ReadAll, vbCrLf) 
09.
 
10.
For i = 0 To UBound(Inhalt) 
11.
    If Left(Inhalt(i), LNach) = Nach Then Inhalt(i) = Inhalt(i) & vbCrLf & Ein 
12.
Next 
13.
fso.CreateTextFile(Datei).Write Join(Inhalt, vbCrLf)
Wenn die zu bearbeitende Datei per Kommandozeilenparameter - also etwa aus einem Batch mit:
cscript //nologo "C:\Utils\SigEinf.vbs" "D:\txt2.txt"
oder per Drag & Drop übergeben werden soll, die Zeile 1 durch
01.
If WScript.Arguments.Count = 0 Then 
02.
    WScript.Echo "Bitte zu bearbeitende Datei als Parameter übergeben!" 
03.
    WScript.Quit 1 
04.
End If 
05.
Datei = WScript.Arguments(0)
ersetzen.

Grüße
bastla

[Edit] VBS-Version durch andere Variante ersetzt [/Edit]
Bitte warten ..
Mitglied: pieh-ejdsch
28.02.2011 um 21:04 Uhr
moin zusammen,

Die zu dursuchenden Zeilen mit Findstr in der Forschleife habe ich öfter mittels Temporären Script gemacht, da so die Ausgabe dieses Scriptes vom Findstr verarbeitet wird.
dabei ist es unerheblich ob in dieser Zeile SonderZeichen oder eine Ungerade Anzahl Anführungszeichen enthalten sind.

01.
@echo off & setlocal disabledelayedexpansion 
02.
set "Nach=<hier>" 
03.
set "Datei=txt2.txt" 
04.
set "DateiEinf=txt1.txt" 
05.
 
06.
set "DateiTmp=Textfile.tmp" 
07.
 
08.
>"%temp%\Line.cmd" echo @echo off ^& setlocal enabledelayedexpansion 
09.
>>"%temp%\Line.cmd" echo echo.!Zeile! 
10.
>>"%temp%\Line.cmd" echo endlocal 
11.
 
12.
move "%Datei%" "%DateiTmp%" 
13.
for /f "usebackq delims=" %%i in ("%DateiTmp%") do set "Zeile=%%i" & call :ProcessLine 
14.
del "%temp%\Line.cmd" 
15.
pause 
16.
goto :eof 
17.
 
18.
:ProcessLine 
19.
setlocal enabledelayedexpansion 
20.
>>"%Datei%" echo !Zeile! 
21.
"%temp%\Line.cmd"|findstr /b /L "%Nach%">nul && type "%DateiEinf%">>"%Datei%" 
22.
endlocal 
23.
goto :eof
Gruß Phil
Bitte warten ..
Mitglied: bastla
28.02.2011 um 21:13 Uhr
@PH
[Edit] Das Problem ist nicht die Ausgabe der Zeile, sondern der Suchstring %Nach% ...

... leicht zu erkennen, wenn zB anstelle des richtigen
set "Nach=<td class="inner">&nbsp;Germany</td>" 
eine leicht abgewandelte Version verwendet wird:
set "Nach=<td class="inner">&nbsp;Germany2</td>" 
Ersetzt wird nämlich auch dann ...
[]/Edit]

Grüße
bastla
Bitte warten ..
Mitglied: pieh-ejdsch
28.02.2011 um 21:26 Uhr
ist doch auch kein Problemchen.

da müsste doch /g:"Datei" Temporär auch gehen

01.
@echo off & setlocal disabledelayedexpansion 
02.
set "Nach=<hier>" 
03.
set "Datei=txt2.txt" 
04.
set "DateiEinf=txt1.txt" 
05.
 
06.
set "DateiTmp=Textfile.tmp" 
07.
 
08.
>"%temp%\Line.cmd" echo @echo off ^& setlocal enabledelayedexpansion 
09.
>>"%temp%\Line.cmd" echo echo.!Zeile! 
10.
>>"%temp%\Line.cmd" echo endlocal 
11.
 
12.
setlocal enabledelayedexpansion 
13.
>"%temp%\Suchtext" echo !Nach! 
14.
endlocal 
15.
 
16.
move "%Datei%" "%DateiTmp%" 
17.
for /f "usebackq delims=" %%i in ("%DateiTmp%") do set "Zeile=%%i" & call :ProcessLine 
18.
del "%temp%\Line.cmd" 
19.
pause 
20.
goto :eof 
21.
 
22.
:ProcessLine 
23.
setlocal enabledelayedexpansion 
24.
>>"%Datei%" echo !Zeile! 
25.
"%temp%\Line.cmd"|findstr /b /g:"%temp%\Suchtext">nul && type "%DateiEinf%">>"%Datei%" 
26.
endlocal 
27.
goto :eof
auch genügen.

Gruß Phil
Bitte warten ..
Mitglied: bastla
28.02.2011 um 21:37 Uhr
@PH
Yep - damit wär's dann wohl erschlagen ...

... wobei aber die eine Temporärdatei auch noch eingespart werden könnte:
01.
@echo off & setlocal disabledelayedexpansion 
02.
set "Nach=<td class="inner">&nbsp;Germany</td>" 
03.
set "Datei=txt2.txt" 
04.
set "DateiEinf=txt1.txt" 
05.
 
06.
set "DateiTmp=Textfile.tmp" 
07.
 
08.
setlocal enabledelayedexpansion 
09.
>"%temp%\Suchtext" echo "!Nach! 
10.
endlocal 
11.
 
12.
move "%Datei%" "%DateiTmp%" 
13.
for /f "usebackq delims=" %%i in ("%DateiTmp%") do set "Zeile=%%i" & call :ProcessLine 
14.
pause 
15.
goto :eof 
16.
 
17.
:ProcessLine 
18.
setlocal enabledelayedexpansion 
19.
>>"%Datei%" echo !Zeile! 
20.
echo "!Zeile!"|findstr /b /g:"%temp%\Suchtext">nul && type "%DateiEinf%">>"%Datei%" 
21.
endlocal 
22.
goto :eof
Grüße
bastla

P.S.: Ohne Parameterprüfung wäre in diesem Fall aber mal die VBS-Variante kürzer ...
Bitte warten ..
Ähnliche Inhalte
Basic
AutoIt - Array auslesen und den Inhalt der Dateien in Worddatei einfügen
gelöst Frage von hipfzwirgelBasic4 Kommentare

Hallo an alle AutoIt-Spezialisten, ich erstelle gerade ein Script(genauer eine Funktion :-) ), dass Bilder in eine Worddatei einfügen ...

Batch & Shell
Batch Datei durchsuchen und nach String eine zusätzliche Zeile einfügen
gelöst Frage von Borob14Batch & Shell5 Kommentare

Hi zusammen habe schon einiges in der Richtung in diesen und anderen Foren durchgelesen, verstehe den Syntax aber nicht ...

Batch & Shell
Wert in einer TXT Datei suchen
Frage von nolle99Batch & Shell11 Kommentare

Hallo Leute Ich habe ein Problem Ich habe mir von meiner Seite alle URLs in einer TXT gespeichert (30.000 ...

Batch & Shell
PDF Dateien nach Inhalt einer TXT Datei umbenennen
gelöst Frage von Chris1979Batch & Shell2 Kommentare

Hallo zusammen, ich stehe gerade vor einem Problem und hätte eine Frage zur Umsetzung. Ich bin mit der Batch ...

Neue Wissensbeiträge
Microsoft Office

Office 2010 Starter erneut auf einer frischen Windows-Version installieren

Tipp von Lochkartenstanzer vor 1 TagMicrosoft Office9 Kommentare

Moin, vor ein paar Tagen schlug bei mir ein Kunde auf, der sein Widnows 7 geschrottet und es inklusive ...

Datenbanken

Upgrade MongoDB 3.4 auf 3.6

Erfahrungsbericht von Frank vor 1 TagDatenbanken

Seit kurzem gibt es das 3.6 Update für die MongoDB: Sicherheit, das Sortieren, Aggregation und auch die Performance wurde ...

SAN, NAS, DAS

Backdoor Zugang und Upload-Bug in vielen Western Digital MyCloud Geräten

Information von Frank vor 1 TagSAN, NAS, DAS2 Kommentare

James Bercegay von der Firma Gulftech hat die Fehler an Western Digital gemeldet und das Unternehmen stellt bereits ein ...

Microsoft Office

Outlook 2016 - Beim Weiterleiten keine PDF Anhänge mehr - KB4011626 entfernen

Erfahrungsbericht von Deepsys vor 1 TagMicrosoft Office3 Kommentare

Wenn ihr feststellt das ihr beim Weiterleiten von E-Mails keine PDF Anhänge mehr versendent, dann dankt Microsoft. Diese tolle ...

Heiß diskutierte Inhalte
Netzwerke
NTFS-Berechtigung
Frage von Daoudi1973Netzwerke23 Kommentare

Hallo zusammen und frohes neues Jahr (Sorry, ich bin spät dran) Meine Frage: 1- Ich habe einen Ordner im ...

Drucker und Scanner
Gesucht DIN A3 Drucker
Frage von NebellichtDrucker und Scanner15 Kommentare

Hallo, ich möchte einen neuen DIN A3 Drucker kaufen. Um ab und zu, ca. 1 mal die Woche Farbausdrucke ...

iOS
Einladung vom iphone kalender
Frage von jensgebkeniOS15 Kommentare

Hallo Gemeinschaft, folgendes Problem - immer wenn ich von meinem Iphone einen Termin einztrage und diesem Termin Teilnehmer zuweise, ...

Windows Netzwerk
Drucker isolieren in Windows Domäne
gelöst Frage von lcer00Windows Netzwerk14 Kommentare

Hallo zusammen, habe eine Windows-AD (2012R2) in der es einen Druckerserver gibt. Mittlerweile verliere ich das Vertrauen in die ...