bankaifan
Goto Top

Erreichbarkeit von Links überprüfen die in verschiedenen Dateie stehen.

Hallo zusammen,
ich hätte eine Frage und zwar möchte ich eine Batchdatei erstellen, die alle .html und .js Dateien in einem Verzeichnis und dessen Unterverzeichnissen durchsucht nach dem String "file:*" anschließend soll überprüft werden ob der link der hinter dem string kommt (file:J:\SAS\Navigation\) erreichbar ist. Der link kann sowohl auf dateien als auch auf verzeichnisse verlinken.

Viele Grüße

Content-ID: 175445

Url: https://administrator.de/contentid/175445

Ausgedruckt am: 22.11.2024 um 07:11 Uhr

60730
60730 28.10.2011 um 09:39:16 Uhr
Goto Top
Salve,

  • was ist denn aus dem geworden?

und zwar möchte ich eine Batchdatei erstellen, die alle .html und .js Dateien in einem Verzeichnis und dessen Unterverzeichnissen durchsucht nach dem String "file://*"

  • dazu gibts doch hier massenhaft Vorlagen?
  • DU schreibst doch auch -möchte ich eine Batchdatei erstellen?

Von daher und weil ich nicht wirklich DIE Frage finde, die du gestellt hast - die Gegenfrage - wo hängt es?

  • SUFUPUTT?
  • for /?
  • findstr /?
  • if not exist ?
bankaifan
bankaifan 28.10.2011 um 11:00:22 Uhr
Goto Top
@echo off
setlocal enabledelayedexpansion
for /R %CD% %%a in (*) do for /F %%b in ("%%a") do if %%b equ "file://*" echo >> test.txt  

so weit bin ich bis jetzt aber auch das funktioniert iwie nicht.

Der oben genannte link sieht interessant aus. dazu muss ich aber erstmal noch ne genehmigung bekommen das teil durch die DMZ zu zwengen ^^

Danke dafür.
60730
60730 28.10.2011 um 11:26:56 Uhr
Goto Top
hommmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm

Den verlinkten Link hat dir gestern doch der Kollege... geschickt?

Für das führende €echo off - zahle bitte 5 ReichsMark an eine Wohltätige Stiftung, und wenn du mir die Spendenquittung gefaxt hast - kann ich ja nochmal gnädigerweise drüberschauen.
bankaifan
bankaifan 28.10.2011 um 12:27:22 Uhr
Goto Top
Hab leider gerade keine Quittungen da. Aber ... ich bin weiter gekommen

Als nächstes muss ich nurnoch alle zeichen die mich nicht interessieren aus der jeweiligen zeile rausbekommen


ich konnte den link gestern nicht öffnen, da ist er an unserem Filter gescheitert. jetzt geht er komischer weise
bankaifan
bankaifan 28.10.2011 um 12:52:38 Uhr
Goto Top
Ok. Hier komme ich jetzt aber wirklich nichtmehr weiter.

setlocal enabledelayedexpansion
for /R %CD% %%a in (*) do for /F %%b in ("%%a") do findstr /I /C:file:// %%b >>test.txt  
for /F "tokens=1,2,3 delims=" usebackq" %%c in (test.txt) do echo %%e >> test2.txt  
pause>nul

ich hab jetzt in test.txt alle Links die "file:" enthalten. aber am anfang steht bei machen noch "<a href="" und bei anderen "linkset='<a href=" sowie am ende "*>"

Wie komme ich das noch weg?

EDIT: ich habe mit diesem code

setlocal enabledelayedexpansion
if exist test.txt del test.txt
for /R %CD% %%a in (*) do for /F %%b in ("%%a") do findstr /I /C:file:// %%b >>test.txt  
if exist test2.txt del test2.txt
for /F %%c in (test.txt) do echo %%c >> test2.txt
pause>nul

zumindest den anfang der zeile als output bekommen. ich will aber " als delimiter verwenden und dann den zweiten token verwenden.

Also Beispiel zwei zeilen:

<a href="file://W:\Prz-SOFTWARE\IB63\SAS\MXG">MXG<br />
linkset='<a href="file://W:/Prz-SAS92/ITMS/ITRM/i/HUK ITRM Transformations">HUK ITRM Transformations</a>'

Und ich möchte als Ergebnis:

"file:W:\Prz-SOFTWARE\IB63\SAS\MXG" bzw: "W:\Prz-SOFTWARE\IB63\SAS\MXG"
selbiges beim zweiten link
bastla
bastla 28.10.2011 um 15:48:56 Uhr
Goto Top
Hallo bankaifan!

Ich würde das eher so versuchen:
@echo off & setlocal
set "Liste=test2.txt"  
set "Nach=file://"  

del "%Liste%" 2>nul  
for /R %%a in (*) do for /f "delims=" %%b in ('findstr /I /C:file:// "%%a"') do set "Zeile=%%b" & call :ProcessLine  
goto :eof

call set "Zeile=%%Zeile:*%Nach%=%%"  
>>"%Liste%" echo %Zeile%  
goto :eof
BTW: Die Schreibweise
for /r %CD%
ist entweder sinnlos (wenn der aktuelle Pfad kein Leerzeichen enthält) oder kontraproduktiv (bei Leerzeichen im aktuellen Pfad) - um eine durchgängig sinnlose Version zu erhalten, solltest Du
for /r "%CD%"
verwenden ... face-wink

Grüße
bastla
bankaifan
bankaifan 31.10.2011 um 07:24:22 Uhr
Goto Top
Das Fehlt noch ein

:ProcessLine oder?

Ich bekomme jedoch nur 5 Zeilen als Output obwohl ingesamt fast 30 Links nach diesem Schema enthalten sind. und die <a href="http://*"> files bekomme ich so auch nicht. Ich denke da ist die Token Methode besser. Ich komme damit aber nicht so gut zurecht.

EDIT:

ich hab jetzt verschiedene sachen ausprobiert und bin am ende zumindest einigermaßen ans ziel gekommen

Die erste Methode hat mir zwar zuverlässig alle Links geliefert, jedoch nicht so schön aufbereitet wie die zweite
@echo off & setlocal
set "Liste=test2.txt"  
set "Nach=file://"  

echo file

for /R %%a in (*) do for /f "tokens=1,2,3,4 delims=><" %%b in ('findstr /I /C:file:// "%%a"') do set "Zeile=%%c" & call :ProcessLine  
goto :eof

:ProcessLine
call set "Zeile=%%Zeile:*%Nach%=%%"  
>>"%Liste%" echo "%Zeile%"  
goto :eof

Die zweite Methode hat mir nur ein paar links geliefert ( eben die, bei denen kein <a am anfang steht nicht) dafür diese aber schön aufbereitet. vllt habt ihr ja jetzt noch ne tolle kombination der beiden ^^
setlocal enabledelayedexpansion
REM for /R %%a in (*) do for /F %%b in ("%%a") do findstr /I /C:http %%b >>test.txt  
del tmp1.txt
del file.txt
del http.txt
del https.txt
for /R %%k in (*) do for /F "tokens=1,2,3,4 delims=><" %%l in (%%k) do if not "%%m"=="" call :ProcessLine "%%m"  
pause>nul


:ProcessLine
set var=%1%
if "%var:~1,1%"=="a" (  
if "%var:~9,1%"=="f" echo %var% >> file.txt  
if "%var:~12,2%"=="ps" echo %var% >> https.txt  
if "%var:~12,2%"=="p:" echo %var% >> http.txt  
)
bastla
bastla 31.10.2011 um 15:01:06 Uhr
Goto Top
Hallo bankaifan!
Das Fehlt noch ein

:ProcessLine oder?
Yep - gut, dass Du noch eines herumliegen hattest ... face-wink
Dass es auch um Links gehen sollte, die nicht auf Dateien/Ordner zeigen, hattest Du aber nicht erwähnt ...

... daher wäre es sinnvoll, eine Beispieldatei mit möglichst allen vorkommenden Schreibweisen zu posten.

Ansonsten könntest Du auch einfach noch ein Schleifchen um die Version 1 herumwickeln und die gewünschten Arten getrennt verarbeiten lassen, also (ungetestet) etwa:
@echo off & setlocal
set "Art=file http https"  

for %%i in (%Art%) do (
    del "%%i.txt"  
    for /R %%a in (*) do for /f "tokens=1,2,3,4 delims=><" %%b in ('findstr /I /C:%%i:// "%%a"') do set "Zeile=%%c" & call :ProcessLine "%%i"  
)
goto :eof

:ProcessLine
call set "Zeile=%%Zeile:*%~1://=%%"  
>>"%~1.txt" echo "%~1://%Zeile%  
goto :eof
Grüße
bastla
bankaifan
bankaifan 31.10.2011 um 15:19:04 Uhr
Goto Top
Zu so später Stunde noch ne antwort Aber für mich ist jetzt erstmal Feierabend. Teste ich dann am Mittwoch.

Dennoch hier mal die schreibweisen:

linkset='<a href="file:W:/Prz-SAS92/ITMS/ITRM/i/HUK ITRM Transformations">HUK ITRM Transformations</a>' Die 0 ist variabel, von 0 bis *
linkset+='<a href="file:W:/Prz-SAS92/ITMS/ITRM/i/ITSAIX">AIX</a>'
linkset='HUK ITRM Transformations'
Die 0 ist variabel, von 0 bis *
linkset+='AIX'
linkset+='<a href=""https://r3p1l05a1.lan.huk-coburg.de:21001/ibm/console" target="_blank">AIX</a>'

Parameter in diesen links nicht vorhanden. (Die oben genannten links tauchen nur in den .js so auf

ansonsten

Parameter und Targer variabel (ggf. intern in dem token noch ne trennung nach "?
<a href="file:..." (PARAMETER/TARGET)>BESCHREIBUNG</a><br />
<a href="http/https://... WIE OBEN>

Nicht mit verarbeitet haben sollen z. B.

<a href="#" onMouseover="showmenu(event,linkset[1])" onMouseout="delayhidemenu()">ITRM Backup</a><br />

ein Beispiel mit Parameter

<td><a href="file:W:\Prz-SOFTWARE\IT63\SAS\SAS92\TS2M3\SASFoundation\9.2\sastest\sasoq.exe -tables *:*">SAS Operational Qualification Tool</a><br /></td>

Die Parameter müssen nicht mit übernommen werden. Ich will überall nur den reinen Link.


Falls sich das umsetzen lässt wäre ich für eure hilfe wirklich dankbar. ansonsten werde ich es wohl mit STRG + H (Ersetzen) lösen müssen. Ist aber bei steigender Anzahl von Variationen und Links nicht so schön


In diesem Sinne. Schönen Feierabend und morgen einen erholsamen Feiertag.

Grüße

Daniel
bastla
bastla 31.10.2011 um 19:47:23 Uhr
Goto Top
Hallo bankaifan!

Nur mal am Beispiel von
<td><a href="file://W:\Prz-SOFTWARE\IT63\SAS\SAS92\TS2M3\SASFoundation\9.2\sastest\sasoq.exe -tables *:*">SAS Operational Qualification Tool</a><br /></td>
Ich wüsste nicht, nach welchen Kriterien hier der Link vom Parameter getrennt werden sollte - Leerzeichen kann es ja im Hinblick auf zB
linkset='<a href="file://W:/Prz-SAS92/ITMS/ITRM/i/HUK ITRM Transformations">HUK ITRM Transformations</a>'
eigentlich nicht sein ...

Grüße
bastla

P.S.: Bitte auch für Beispiel-Daten Code-Formatierung verwenden ...
bankaifan
bankaifan 02.11.2011 um 08:20:38 Uhr
Goto Top
Hallo bastla,

nungut angesichts dessen könnte ich damit leben dass die parameter noch dran hängen.


Ok geht klar

Grüße

PS: Die Methode oben hat auf jedenfall schonmal alle links gefunden.