2

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

(我会认为这是一个措辞很好的问题,但 stackoverflow 似乎希望我再写一些,所以就在这里!)

4

3 回答 3

3
    dir %filename% | find "<SYMLINK>" && (
      Do something
    )
于 2013-09-18T07:05:34.027 回答
2
for /f "tokens=2delims=[]" %%a in ('dir /ad ^|find "<SYMLINKD>"') do echo Symlink: "%%a"

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

于 2013-09-18T08:54:49.223 回答
1

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

@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

于 2018-06-23T19:49:21.757 回答