Abfrage mit Batchdatei, ob ein Link vorhanden ist
Ich will über eine Batchdatei abfragen, ob ein bestimmter Link vorhanden ist.
Der allgemein bekannte Befehl
funktioniert nicht.
Dieser Befehl funktioniert zwar bei allen anderen Dateiarten und auch bei Verzeichnissen.
Bei Links wird angezeigt, daß der Link angeblich nicht vorhanden ist.
Wie lautet der Befehl bei Links, die ganz einfach in Windows erzeugt wurden, und daher die Endung lnk haben.
Gerry
Der allgemein bekannte Befehl
if exist testdatei.lnk echo vorhanden
Dieser Befehl funktioniert zwar bei allen anderen Dateiarten und auch bei Verzeichnissen.
Bei Links wird angezeigt, daß der Link angeblich nicht vorhanden ist.
Wie lautet der Befehl bei Links, die ganz einfach in Windows erzeugt wurden, und daher die Endung lnk haben.
Gerry
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 668734
Url: https://administrator.de/contentid/668734
Ausgedruckt am: 21.11.2024 um 17:11 Uhr
8 Kommentare
Neuester Kommentar
Ich will über eine Batchdatei abfragen, ob ein bestimmter Link vorhanden ist.
Der allgemein bekannte Befehl
if exist "c:\Pfad\testdatei.lnk" echo vorhanden
Oder willst du prüfen ob das Ziel des Links existiert??
Wenn du das Ziel des Links meinst das kannst du stattdessen so prüfen:
@echo off
set "link=D:\testdatei.lnk"
for /f "delims=" %%a in ('powershell -EP Bypass -C "Test-Path -LiteralPath (New-Object -Com Wscript.Shell).CreateShortcut('%link%').TargetPath"') do set "result=%%a"
if /i "%result%" == "True" (
echo Ziel des Links existiert.
) else (
echo Ziel des Links wurde nicht gefunden.
)
Gruß in die müffelnde Batch-Gruft ...
Ich will für eine einfache Abfrage kein Englisch lernen
Tja, dann wirst Du zukünftig evtl. auf Probleme stoßen. Denn mit englischen Begriffen findet man mehr Informationen als in Deutsch.Außerdem hat Deine Verknüpfung evtl. Leerzeichen?
Dann solltest Du diese in Hochkommata setzen.
if exist "testdatei.lnk" echo vorhanden
Gruss Penny.
Ich will überprüfen, ob eine Windowsverknüpfung, gekennzeichnet mit der Endung LNK vorhanden ist, oder nicht.
Steht oben und geht einwandfrei! Fehler liegt bei deiner Anwendung. Wenn dazu nichts weiter an Umgebungsbedingungen postest kann dir keiner helfen.Eventuell sucht ihr den Fehler an der falschen Stelle, da ich keinen Hardlink und auch keinen Softlink meine.
Und nein, das obige Skriptbeispiel behandelt nur das Ziel des Links, keine Soft- oder Hardlinks! Ein Überprüfen einer LNK Datei selbst auf vorhanden sein klappt mit if exist einwandfrei siehst du ja oben im Screenshot!Es gibt für *.lnk keine Sonderbehandlung, das sind schlicht ganz normale Dateien im Dateisystem die mit if exist problemlos gefunden werden wenn man es richtig einsetzt!
Was zu erwarten war.
Wenn man Pfade nämlich nachträglich ergänzen oder bearbeiten will sind eingebaute Anführungszeichen in einer Variablen immer kontraproduktiv und führen zu Fehlern. Indem du es so wie oben schreibst vermeidest du solche Probleme.
durch die befehlsbedingten Anführungszeichen irritieren lassen.
Best Practice ist es aber es so zu schreiben und um die Pfadvariablen immer Anführungszeichen setzen.set "linkverzeichnis=D:\daten\test muster-datei.lnk"
if exist "%linkverzeichnis%" ........