Como sei se um link simbólico no Windows ainda funciona?

0

Eu tenho muitos links simbólicos (Windows 7). Como sei se eles estão funcionando ou se estão mortos (ou seja, o arquivo original foi excluído / movido / renomeado)?

eu tentei

if not exist mylink.txt echo The link is dead

Mas isso não funciona: se o link existir, if existsempre responda, trueindependentemente de o link estar morto ou não.

Basj
fonte

Respostas:

3

Você pode usar o fsutil para verificar se o arquivo de link simbólico e o arquivo vinculado existem.

fsutil file queryfileid mylink.txt
if errorlevel 1 echo The link is dead

Se você deseja verificar todos os links simbólicos em uma pasta, pode usar

FOR %%f IN (*) DO (
  fsutil file queryfileid %%f
  if errorlevel 1 echo The link is dead
)

Mas você deve tomar cuidado. O fsutil também pode sair com o código de saída 1 se ocorrer um erro.

Werner Henze
fonte
Obrigado! Existe uma solução rápida para excluir todos os links simbólicos que estão mortos em uma pasta? Eu imagino que é possível com o seu fsutil, mas eu não sei como fazer um loop ...
Basj
@ JosBas eu adicionei um loop for na minha resposta. Você pode usar isso para percorrer todos os arquivos em uma pasta. Mas você deve tomar cuidado, o fsutil pode sair com o código de saída 1 não apenas para links mortos, mas também quando outros erros ocorrerem. Você deve repetir os nomes dos arquivos antes de executar um arquivo bat que exclui os arquivos (substitua o eco por a del %%f)!
Werner Henze