BatchScript um .url-Dateien auszulesen
Hallo allerseits,
ich versuche gerade ein Batch-Script zu schreben, das die Urls aus Verknüpfungen ausliest:
Es sollen alle *.url Dateien in dem Ordner, in dem die Batch-Datei sich befindet, durchsucht werden. Eine solche *.url-Datei sieht typischerweise wie folgt aus:
Und aus dieser Datei möchte ich gerne die URL aus Zeile 4 extrahieren und in einer anderen TextDatei speichern.
Jetzt habe ich eine Batch-Datei geschrieben:
Wahrscheinlich seht ihr, dass ich mit Batch-Scripten sehr unerfahren bin. Mein Problem liegt in Zeile 10:
Das Script benutzt immer den else-Zweig, in der if %%k equ "" (..) else (..) Konstellation. Auch wenn in der gesamten Zeile nur ein Gleichheitszeichen vorkommt:
URL=http://hamster.volker-gringmuth.de/
Dadurch ist mein Ergebnis falsch, welches da (im Augenblick) lautet:
http://hamster.volker-gringmuth.de/=
Wisst ihr, woran es liegt?
Ich bin natürlich auch für ander Lösungsansätze offen.
Vielen Dank im Voraus!
ich versuche gerade ein Batch-Script zu schreben, das die Urls aus Verknüpfungen ausliest:
Es sollen alle *.url Dateien in dem Ordner, in dem die Batch-Datei sich befindet, durchsucht werden. Eine solche *.url-Datei sieht typischerweise wie folgt aus:
[DEFAULT]
BASEURL=http://hamster.volker-gringmuth.de/
[InternetShortcut]
URL=http://hamster.volker-gringmuth.de/
IDList=
IconFile=http://hamster.volker-gringmuth.de/favicon.ico
IconIndex=1
[{000214A0-0000-0000-C000-000000000046}]
Prop3=19,2
Jetzt habe ich eine Batch-Datei geschrieben:
@echo off
REM alle Dateinamen in tmp-Datei:
dir /B *.url > _tmp_url.txt
REM Schleife über alle Dateien.
for /F "usebackq tokens=*" %%a in (_tmp_url.txt) do (
REM Schleife über alle Zeilen der Datei. Nur Zeile ausgeben, die mit URL= beginnt
for /F "usebackq delims== tokens=1,2,*" %%i in ("%%a") do @(
if %%i equ URL (if %%k equ "" (echo %%j) else (echo %%j=%%k))
)
) >> alleUrls.txt
REM tmp-Datei löschen:
del _tmp_url.txt
Wahrscheinlich seht ihr, dass ich mit Batch-Scripten sehr unerfahren bin. Mein Problem liegt in Zeile 10:
Das Script benutzt immer den else-Zweig, in der if %%k equ "" (..) else (..) Konstellation. Auch wenn in der gesamten Zeile nur ein Gleichheitszeichen vorkommt:
URL=http://hamster.volker-gringmuth.de/
Dadurch ist mein Ergebnis falsch, welches da (im Augenblick) lautet:
http://hamster.volker-gringmuth.de/=
Wisst ihr, woran es liegt?
Ich bin natürlich auch für ander Lösungsansätze offen.
Vielen Dank im Voraus!
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 158526
Url: https://administrator.de/forum/batchscript-um-url-dateien-auszulesen-158526.html
Ausgedruckt am: 04.05.2025 um 22:05 Uhr
2 Kommentare
Neuester Kommentar
Hallo seldolo und willkommen im Forum!
Versuch es so (direkt in der CMD-Shell, als Batch mit jeweils %%i und %%j):
Auch mit Deinem Ansatz ließe sich das lösen - allerdings hattest Du ein Token zuviel (es geht ja nur darum, die Teile vor und nach dem ersten "=" zu isolieren):
Grüße
bastla
Versuch es so (direkt in der CMD-Shell, als Batch mit jeweils %%i und %%j):
for /f "tokens=1* delims==" %i in ('findstr /b "URL=" *.url') do >>alleUrls.txt echo %j
@echo off
REM Schleife über alle Dateien.
for /F "tokens=*" %%a in ('dir /b *.url') do (
REM Schleife über alle Zeilen der Datei. Nur Zeile ausgeben, die mit URL= beginnt
for /F "usebackq tokens=1* delims==" %%i in ("%%a") do (
if "%%i" equ "URL" echo %%j
)
)>>alleUrls.txt
bastla