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
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
Please also mark the comments that contributed to the solution of the article
Content-Key: 8055528870
Url: https://administrator.de/contentid/8055528870
Printed on: April 28, 2024 at 02:04 o'clock
13 Comments
Latest comment
Hi,
hilft
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:
hilft
for /f "delims=" %%i in ('findstr /i /r /c:"Dateiname-.*Win64.zip" /c:"Win64.zip.*Dateiname-" index.html') do set filename=%%i
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
@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%
@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%
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 .
Auch kein Problem , aber wieso nicht gleich ein Package Manager benutzen?? Da reicht ein:
zum installieren
und zum upgraden
https://community.chocolatey.org/packages/IrfanView#upgrade
fertsch.
zum installieren
choco install irfanview
und zum upgraden
choco upgrade irfanview
https://community.chocolatey.org/packages/IrfanView#upgrade
fertsch.
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"
@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)"
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.