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!
Please also mark the comments that contributed to the solution of the article
Content-Key: 158526
Url: https://administrator.de/contentid/158526
Printed on: April 24, 2024 at 19:04 o'clock
2 Comments
Latest comment
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