批处理文件(windows cmd.exe)测试文件是否为链接

时间:2013-09-18 05:27:44

标签: windows batch-file cmd symlink

如何测试文件是否是批处理文件(windows cmd.exe)中的符号链接?

(我原本以为这是一个措辞很好的问题,但是stackoverflow似乎要我多写一些,所以这里就是!)

3 个答案:

答案 0 :(得分:2)

    dir %filename% | find "<SYMLINK>" && (
      Do something
    )

答案 1 :(得分:2)

for /f "tokens=2delims=[]" %%a in ('dir /ad ^|find "<SYMLINKD>"') do echo Symlink: "%%a"

这不适用于符号链接名称中的[]

答案 2 :(得分:0)

这是一个甚至更快的解决方案,因为它不需要管道,还允许以相对路径或绝对路径访问原始文件名:

@echo off
setlocal EnableDelayedExpansion

set ScriptPath=%~dp0
cd /d "%ScriptPath%"

set "r=%__CD__%"

set SearchTarget=SomePath

for /f "tokens=*" %%a in ('dir /s /b /a:l %SearchTarget% 2^>nul') do (
   set "FullPath=%%a"
   set "LocalPath=!:%r%=!"

   rem local -> [absolute]
   echo(!FullPath:%r%=! -^> [%%a]
)

如果您不想递归搜索,请删除/s命令的dir选项。