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-ID: 1768119079

Url: https://administrator.de/forum/abfrage-ob-ein-verzeichnis-ein-hardlink-ist-batch-1768119079.html

Ausgedruckt am: 30.12.2024 um 17:12 Uhr

rubberman
rubberman 27.01.2022 um 18:58:57 Uhr
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
gerry56
gerry56 27.01.2022 um 22:38:51 Uhr
Goto Top
Danke für den Lösungsvorschlag

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

Gerry
rubberman
rubberman 27.01.2022 um 23:08:34 Uhr
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
gerry56
gerry56 28.01.2022 um 11:43:50 Uhr
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.
Trelane
Lösung Trelane 28.01.2022 um 13:38:29 Uhr
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
gerry56
gerry56 28.01.2022 um 15:58:19 Uhr
Goto Top
Danke Trelane

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

Gruß
Gerry