Comment puis-je faire un fichier batch découvrir si un répertoire est en fait un Junction?
-
27-10-2019 - |
Question
J'écris un fichier batch (.bat) et je ne pouvais pas trouver un moyen de découvrir si un répertoire donné je le chemin d'accès est un vrai répertoire ou un Junction (créé sous Windows 7 en utilisant mklink /j
). point que quelqu'un peut me dans la bonne direction?
La solution
Ceci est une technique moche mais fsutil reparsepoint query
chemin vers le fichier échouera (%ERRORLEVEL%
sera 1) si le fichier est pas une jonction et réussir (%ERRORLEVEL%
sera 0) si elle est un. L'autre problème est fsutil
vous veut être un administrateur. De plus, ne sont pas tous points d'analyse sont les jonctions de répertoires.
Autres conseils
Dans un script batch, vous pouvez utiliser les éléments suivants:
SET Z=&& FOR %%A IN (linkfilename) DO SET Z=%%~aA
IF "%Z:~8,1%" == "l" GOTO :IT_A_LINK
est plus rapide que d'appeler DIR /AL
.
Le %%~aA
obtient les attributs du "linkfilename",
une 9 chaîne char comme d--------
(un répertoire),
ou d-------l
un lien vers un répertoire,
ou --------l
un lien vers un fichier.
%Z:~8,1%
saisit alors que l'attribut point d'analyse.
J'ai ce petit bijou qui liste tous les Jonctions et leurs cibles dans votre répertoire courant:
for /F "delims=;" %j in ('dir /al /b') do @for /F "delims=[] tokens=2" %t in ('dir /a ^| findstr /C:"%j"') do @echo %j :: %t
sortie Exemple:
Application Data :: C:\Users\AB029076\AppData\Roaming
Cookies :: C:\Users\AB029076\AppData\Roaming\Microsoft\Windows\Cookies
Local Settings :: C:\Users\AB029076\AppData\Local
My Documents :: C:\Users\AB029076\Documents
NetHood :: C:\Users\AB029076\AppData\Roaming\Microsoft\Windows\Network Shortcuts
PrintHood :: C:\Users\AB029076\AppData\Roaming\Microsoft\Windows\Printer Shortcuts
Recent :: C:\Users\AB029076\AppData\Roaming\Microsoft\Windows\Recent
SendTo :: C:\Users\AB029076\AppData\Roaming\Microsoft\Windows\SendTo
Start Menu :: C:\Users\AB029076\AppData\Roaming\Microsoft\Windows\Start Menu
Templates :: C:\Users\AB029076\AppData\Roaming\Microsoft\Windows\Templates
TestLink :: C:\Users\AB029076\AppData\Roaming\Microsoft\Windows\Network Shortcuts