Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

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, 5081 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
Neue Wissensbeiträge
Sicherheits-Tools

Sicherheitstest von Passwörtern für ganze DB-Tabellen

(1)

Tipp von gdconsult zum Thema Sicherheits-Tools ...

Peripheriegeräte

Was beachten bei der Wahl einer USV Anlage im Serverschrank

(8)

Tipp von zetboxit zum Thema Peripheriegeräte ...

Windows 10

Das Windows 10 Creators Update ist auf dem Weg

(6)

Anleitung von BassFishFox zum Thema Windows 10 ...

Heiß diskutierte Inhalte