如何测试文件是否是批处理文件(windows cmd.exe)中的符号链接?
(我原本以为这是一个措辞很好的问题,但是stackoverflow似乎要我多写一些,所以这里就是!)
答案 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
选项。