gerry56
Goto Top

Abfrage ob ein Verzeichnis ein Hardlink ist (Batch)

Hallo!

Das Problem ist folgendes.
Es sollen mittels Batchdatei einige Hardlinks erstellt werden.

Das ist mit dem Befehl D:\hardlink\mklink /j "c:\ZIELVERZEICHNIS\Macros" "D:\QUELLVERZEICHNIS\vorlagen" kein Problem.

Es gibt aber 2 Probleme.
1.)
Das Verzeichnis könnte schon erstellt sein und befinden sich darin Dateien.
Um den Hardlink zu erstellen, muß das Verzeichnis leer sein, oder gar nicht vorhanden sein.

Dieses Problem kann ich auch noch wie folgt lösen.
if exist ZIELVERZEICHNIS dir /b /A:-d ZIELVERZEICHNIS>nul 2>nul && @echo ZIELVERZEICHNIS ist nicht leer

2.)
Jetzt kommt Problem Nummer zwei, das ich bisher nicht lösen konnte.
Wie kann ich in einer Batchdatei überprüfen, ob ein schon vorhandenes Verzeichnis ein echtes Verzeichnis ist, oder ob es sich um einen Hardlink handelt.
Es gibt zwar den Dosbefehl dir mit dem parameter /a:hi, aber wie kann ich diesen in einer Batchdatei auswerten?

Bitte um Hilfe

Danke im voraus
Gerry

Content-Key: 1768119079

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

Printed on: April 26, 2024 at 15:04 o'clock

Member: rubberman
rubberman Jan 27, 2022 at 17:58:57 (UTC)
Goto Top
Probier mal
@echo off &setlocal
for %%i in ("c:\ZIELVERZEICHNIS\Macros") do set "attr=%%~ai"  
echo %attr%
if "%attr:~,1%%attr:~8,1%"=="dl" echo Junction  
pause
Steffen
Member: gerry56
gerry56 Jan 27, 2022 at 21:38:51 (UTC)
Goto Top
Danke für den Lösungsvorschlag

Leider kommt bei mir die Fehlermeldung "%%i" kann syntaktisch an dieser Stelle nicht verarbeitet werden.

Gerry
Member: rubberman
rubberman Jan 27, 2022 at 22:08:34 (UTC)
Goto Top
Funktioniert bei mir. Hast du irgendwie versucht das ganze in den CMD Prompt zu kopieren, statt es in einem Batch Script auszuführen?

Steffen
Member: gerry56
gerry56 Jan 28, 2022 at 10:43:50 (UTC)
Goto Top
Ich habe es zuerst direkt über den Dosprompt kopiert.
Da es nicht funktionierte, habe ich alles in Notepad kopiert und als test.bat abgespeichert.
Beim Aufruf der Datei kam leider der Fehler.
Member: Trelane
Solution Trelane Jan 28, 2022 at 12:38:29 (UTC)
Goto Top
Hi.

Vielleicht klappt das hier bei dir:
@echo off
fsutil reparsepoint query "c:\ZIELVERZEICHNIS\Macros">nul 2>nul  
if %errorLevel%==0 echo Hardlink
if %errorLevel%==1 echo Kein Hardlink

Funktioniert bei mir sowohl als .bat als auch direkt in der CMD.

Gruß
Trelane
Member: gerry56
gerry56 Jan 28, 2022 at 14:58:19 (UTC)
Goto Top
Danke Trelane

Funktioniert bei mir einwandfrei.
Sowohl bei Verzeichnissen, als auch bei Dateien als Softlink.

Gruß
Gerry