Come posso fare in modo che un file batch scopra se una directory è effettivamente una giunzione?

StackOverflow https://stackoverflow.com/questions/4845039

Domanda

Sto scrivendo un file Batch (.bat) e non sono riuscito a trovare un modo per scoprire se una determinata directory di cui ho il percorso è una directory reale o un Junction (creato su Windows 7 utilizzando mklink /j).Qualcuno può indicarmi la giusta direzione?

È stato utile?

Soluzione

Questa è una tecnica scadente ma fsutil reparsepoint query percorso del file fallirà (%ERRORLEVEL% sarà 1) se il file non è un incrocio e avrà successo (%ERRORLEVEL% sarà 0) se è uno.L'altro problema è che fsutil vuole che tu sia un amministratore.Inoltre, non tutti i reparse point sono giunzioni di directory.

Altri suggerimenti

In uno script batch è possibile utilizzare quanto segue:

 SET Z=&& FOR %%A IN (linkfilename) DO SET Z=%%~aA
 IF "%Z:~8,1%" == "l" GOTO :IT_A_LINK

è più veloce che chiamare DIR /AL.

Il %%~aA ottiene gli attributi di "linkfilename",
una stringa di 9 caratteri come d-------- (una directory),
o d-------l un collegamento a una directory,
o --------l un collegamento a un file.

%Z:~8,1% quindi acquisisce solo l'attributo reparse point.

Ho questo piccolo gioiello che elencherà tutti i nodi e i loro obiettivi nella directory corrente:

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

Risultato di esempio:

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
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top