Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

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

BatchScript um .url-Dateien auszulesen

Frage Entwicklung Batch & Shell

Mitglied: seldolo

seldolo (Level 1) - Jetzt verbinden

12.01.2011 um 21:52 Uhr, 5207 Aufrufe, 2 Kommentare

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:
01.
[DEFAULT] 
02.
BASEURL=http://hamster.volker-gringmuth.de/ 
03.
[InternetShortcut] 
04.
URL=http://hamster.volker-gringmuth.de/ 
05.
IDList= 
06.
IconFile=http://hamster.volker-gringmuth.de/favicon.ico 
07.
IconIndex=1 
08.
[{000214A0-0000-0000-C000-000000000046}] 
09.
Prop3=19,2
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:
01.
@echo off 
02.
 
03.
REM alle Dateinamen in tmp-Datei: 
04.
dir /B *.url > _tmp_url.txt 
05.
 
06.
REM Schleife über alle Dateien.  
07.
for /F "usebackq tokens=*" %%a in (_tmp_url.txt)  do ( 
08.
    REM Schleife über alle Zeilen der Datei. Nur Zeile ausgeben, die mit URL= beginnt 
09.
    for /F "usebackq delims== tokens=1,2,*" %%i in ("%%a") do @( 
10.
        if %%i equ URL (if %%k equ "" (echo %%j) else (echo %%j=%%k)) 
11.
12.
    ) >> alleUrls.txt 
13.
 
14.
REM tmp-Datei löschen: 
15.
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!
Mitglied: bastla
12.01.2011 um 22:45 Uhr
Hallo seldolo und willkommen im Forum!

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
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):
01.
@echo off 
02.
REM Schleife über alle Dateien.  
03.
for /F "tokens=*" %%a in ('dir /b *.url')  do ( 
04.
    REM Schleife über alle Zeilen der Datei. Nur Zeile ausgeben, die mit URL= beginnt 
05.
    for /F "usebackq tokens=1* delims==" %%i in ("%%a") do ( 
06.
        if "%%i" equ "URL" echo %%j 
07.
08.
)>>alleUrls.txt
Grüße
bastla
Bitte warten ..
Mitglied: seldolo
13.01.2011 um 01:20 Uhr
Hallo bastla,

wow, ich bin begeistert!
Dein Einzeiler ist absolut super! Ich werde mich gleich einmal dran setzen, ihn nachzuvollziehen. Kenne findstr noch nicht.

Schon interessant, ich hatte natürlich auch versucht, es ohne temporäre Datei hinzubekommen (mit Hilfe von dem wirklich tollen Tutorial zur For-Schleife hier im Forum), doch es wollte und wollte nicht klappen. Deswegen bin ich ausgewichen auf die Lösung mit Datei.
Wenn ich jetzt deinen Code sehe sieht er auf den ersten Blick genau wie meine Skriptversuche aus; mit dem Unterschied:
deiner machts, bei mir krachts ...

Also vielen Dank!
Das ist wirklich klasse!
Bitte warten ..
Ähnliche Inhalte
Webbrowser
gelöst URL an Internet Explorer aus Datei übergeben (4)

Frage von hesper zum Thema Webbrowser ...

JavaScript
gelöst Per URL ein Element ausblenden (1)

Frage von Peter32 zum Thema JavaScript ...

PHP
PHP: URL kürzen (15)

Frage von michi-ffm zum Thema PHP ...

CMS
gelöst Wordpress Admin-URL ändern (13)

Frage von MegaGiga zum Thema CMS ...

Neue Wissensbeiträge
Firewall

PfSense Repository für Version 2.3.x

(2)

Information von Dobby zum Thema Firewall ...

LAN, WAN, Wireless

WPA-2 hat erste Risse: KRACK

(4)

Information von the-buccaneer zum Thema LAN, WAN, Wireless ...

Hardware

GPD Pocket: Winziger Laptop für Wenig Tipper

(1)

Information von pelzfrucht zum Thema Hardware ...

Windows 10

Microsoft veröffentlicht das "Fall Creators Update

(10)

Information von Penny.Cilin zum Thema Windows 10 ...

Heiß diskutierte Inhalte
Windows Server
gelöst Gruppenrichtlinie greift nicht zu! (23)

Frage von Syosse zum Thema Windows Server ...

Hosting & Housing
Mailserver Software Empfehlungen (20)

Frage von sunics zum Thema Hosting & Housing ...

Windows 7
gelöst Windows 7 Anmeldedomäne festlegen (13)

Frage von flotaut zum Thema Windows 7 ...