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, 5060 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 ..
Neuester Wissensbeitrag
Off Topic

"Ich habe nichts zu verbergen"

(2)

Erfahrungsbericht von FA-jka zum Thema Off Topic ...

Ähnliche Inhalte
Windows XP
WordPad zeigt beim Öffnen keine RTF-Dateien mehr an (1)

Frage von Sinzal zum Thema Windows XP ...

Windows Server
Dateien erscheinen nicht (2)

Frage von kellbidden zum Thema Windows Server ...

Entwicklung
MSI Dateien als Administrator von einer HTA installieren (1)

Frage von iGordon zum Thema Entwicklung ...

Heiß diskutierte Inhalte
CPU, RAM, Mainboards
Kaufberatung für mind. 8 verschiedene HighEnd-Mainboards (24)

Frage von yperiu zum Thema CPU, RAM, Mainboards ...

Mac OS X
Mac kann nicht im LAN pingen alle anderen schon (19)

Frage von smartino zum Thema Mac OS X ...

Hyper-V
Langsames Netzwerk i210 LAN Karte (10)

Frage von Akcent zum Thema Hyper-V ...

Netzwerke
Abisolierwerkzeug (10)

Frage von SarekHL zum Thema Netzwerke ...