supertux
Goto Top

Zeichenfolge aus HTML-Datei

Hallo,

ich suche eine Möglichkeit mit CMD-Batch (kein PowerShell) aus einer index.html den Dateinamen auszulesen.
Der eigentliche Name in der index.html ist Dateiname-1.1.0-Win64.zip

FINDSTR /i /r /c:"Dateiname-.*Win64.zip" /c:"Win64.zip.*Dateiname-" index.html
gibt mir zwar die Zeile aus, aber ich möchte nur den gesuchten Dateiname ohne den ganzen HTML-Code davor und danach.

Wie kann ich das filtern, damit ich den Dateiname in eine Variable setzen kann?

---
supertux

Content-ID: 8055528870

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

Ausgedruckt am: 22.11.2024 um 07:11 Uhr

Cleanairs
Cleanairs 05.08.2023 um 18:00:58 Uhr
Goto Top
Hi,

hilft
for /f "delims=" %%i in ('findstr /i /r /c:"Dateiname-.*Win64.zip" /c:"Win64.zip.*Dateiname-" index.html') do set filename=%%i  
weiter?

Der Befehl findstr sucht nach dem Dateinamen in der HTML-Datei und gibt die Zeile aus, in der der Dateiname gefunden wurde. Der Befehl for iteriert über die Ausgabe von findstr und setzt den Dateinamen in die Variable filename.

Um den Dateinamen in einer Datei speichern zu können:

echo %filename% > filename.txt
7907292512
Lösung 7907292512 05.08.2023 aktualisiert um 19:00:57 Uhr
Goto Top
@echo off
set "file=d:\index.html"  
for /f "delims=" %%a in ('powershell -EP Bypass -C "(sls '%file%' -Pattern 'Dateiname-.*?Win64\.zip').Matches.Value"') do set "filename=%%a"  
echo %filename%
Sowas kannst du aber auch gleich aus dem Web auslesen ohne erst den Umweg überflüssigen Weg über einer Datei zu gehen ...
supertux
supertux 05.08.2023 um 19:09:01 Uhr
Goto Top
Hallo,

ich erhalte mit der index.html den Fehler "<" kann syntaktisch an dieser Stelle nicht verarbeitet werden.

Wenn ich es mir eine Textdatei versuche, funktioniert es.
supertux
supertux 05.08.2023 aktualisiert um 19:24:31 Uhr
Goto Top
Zitat von @7907292512:

Danke, funktioniert face-smile

Wenn ich es für das Web nutzen möchte, einfach die URL eintragen?
7907292512
7907292512 05.08.2023 um 19:28:47 Uhr
Goto Top
Zitat von @supertux:
Wenn ich es für das Web nutzen möchte, einfach die URL eintragen?
@echo off
set "url=https://administrator.de/forum/zeichenfolge-aus-html-datei-8055528870.html"  
for /f "delims=" %%a in ('powershell -EP Bypass -C "[regex]::match((iwr '%url%' -UseBasicParsing).Content,'(?i)Dateiname-.*?Win64\.zip').Value"') do set "filename=%%a"    
echo %filename%
supertux
supertux 05.08.2023 um 19:44:58 Uhr
Goto Top
Zitat von @7907292512:

Das ist natürlich noch besser, funktioniert face-smile
Vielen Dank!
7907292512
7907292512 05.08.2023 aktualisiert um 19:51:29 Uhr
Goto Top
Das ist natürlich noch besser
Falls du diese Datei dann auch herunterladen willst könntest du das natürlich auch noch gleich miterledigen, nur zur Info ...
Einfach mal mit Powershell beschäftigen, dann braucht es auch kein 80er batch mehr face-wink.
supertux
supertux 05.08.2023 um 20:06:46 Uhr
Goto Top
Das Abfragen der Version (z.b Irfanview.com oder Fosshub.com) funktioniert, der richtige Downloadlink wird
dann zum Problem face-sad
7907292512
7907292512 05.08.2023 aktualisiert um 20:24:40 Uhr
Goto Top
Auch kein Problem , aber wieso nicht gleich ein Package Manager benutzen?? Da reicht ein:
zum installieren
choco install irfanview
und zum upgraden
choco upgrade irfanview
https://community.chocolatey.org/packages/IrfanView#upgrade

fertsch.
supertux
supertux 05.08.2023 um 20:35:29 Uhr
Goto Top
Ich möchte das nicht gleich installieren sondern die Programme in meine Install-ISO einbinden.
7907292512
7907292512 05.08.2023 aktualisiert um 21:31:36 Uhr
Goto Top
Ich möchte das nicht gleich installieren sondern die Programme in meine Install-ISO einbinden.
Die Packages kannst du dort auch so runterladen, aber egal ...

Hier Powershell bsp. für Irfanview 64bit
$outpath = 'D:\temp'  
$fname = [regex]::match((iwr 'https://www.irfanview.com/' -UseBasicParsing).Content,'(?i)iview.*?x64_setup\.exe').Value  
$rid = [regex]::match((iwr "https://www.fosshub.com/IrfanView.html?dwl=$fname" -UseBasicParsing),'(?i)(?<="r":")[^"]+').Value  
iwr (irm 'https://api.fosshub.com/download/' -Method Post -ContentType 'application/json' -Body (@{fileName=$fname;projectId='5b8d1f5659eee027c3d7883a';projectUri='IrfanView.html';releaseId=$rid;source='CF'} | ConvertTo-JSON)).data.url -OutFile "$outpath\$fname"  
Kannst du natürlich auch als Batch wie oben zusammenbauen.
@echo off
set "outpath=D:\download"  
powershell -EP Bypass -C "$fname = [regex]::match((iwr 'https://www.irfanview.com/' -UseBasicParsing).Content,'(?i)iview.*?x64_setup\.exe').Value;$rid = [regex]::match((iwr ('https://www.fosshub.com/IrfanView.html?dwl='+$fname) -UseBasicParsing),'(?i)(?<=\x22r\x22:\x22)[^\x22]+').Value;iwr (irm 'https://api.fosshub.com/download/' -Method Post -ContentType 'application/json' -Body (@{fileName=$fname;projectId='5b8d1f5659eee027c3d7883a';projectUri='IrfanView.html';releaseId=$rid;source='CF'} | ConvertTo-JSON)).data.url -OutFile (join-path '%outpath%' $fname)"  
supertux
supertux 05.08.2023 um 21:00:27 Uhr
Goto Top
Wie kommst du an die FossHub Project-ID?
Die Project-ID wird vermutlich sich nicht ändern, aber die Releaseid?
7907292512
7907292512 05.08.2023, aktualisiert am 06.08.2023 um 06:59:24 Uhr
Goto Top
Zitat von @supertux:
Wie kommst du an die FossHub Project-ID?
Browser Developer Tools (F12) Netzwerkanalyse ...
Die Project-ID wird vermutlich sich nicht ändern, aber die Releaseid?
Musst du schauen ob sie sich ändert,... (edit) Codes sind oben dazu ergänzt, sie lesen jetzt auch die releaseID aus.