답변:
dir 명령은 dir /a
이 작업을 수행 할 수 있습니다
2012-12-26 09:30 PM <DIR> .
2012-12-26 09:30 PM <DIR> ..
2012-12-26 09:30 PM 0 a.txt
2012-12-26 09:30 PM <SYMLINK> link.txt [a.txt]
또는 Windows 탐색기를 사용할 수 있습니다.
Right click column, More, Link Target
dir /a
다음 Enter를 누르십시오. / a를 포함하지 않으면 창에 접합점이 표시되지 않습니다. 디렉토리 dir
와 dir /a
디렉토리 의 차이점을 시도해보십시오\Users\YourUsername
StackOverFlow 에서 복사하여 방금이 줄을 사용했으며 작동합니다.
fsutil reparsepoint query "folder name" | find "Symbolic Link" >nul && echo symbolic link found || echo No symbolic link
설명 :
에서 MSDN 파일 할당 테이블 (FAT) 및, 재분석 지점을 관리하는 스파 스 파일을 관리하거나 볼륨을 마운트 해제와 같은 NTFS 파일 시스템에 관련된 수행합니다 작업 : FSUtil에 대해. 매개 변수없이 사용하면 fsutil은 지원되는 하위 명령 목록을 표시합니다.
우리는 사용하기 위해 "심볼릭 링크"가있는 라인을 출력하고, 그것이 심볼릭이라면 find
, find
성공하면, 한 가지를 출력하고, 그렇지 않으면 다른 것을 출력합니다.
참고 사항 :
최소한 Windows OS에서 PowerShell을 사용하면 다음과 같은 지정된 디렉토리에서 기호 링크를 찾을 수 있습니다.
Get-ChildItem 'C:\nodejs\bin\' | Where-Object {$_.LinkType -eq 'SymbolicLink'}
더 간결한 대안은 Get-ChildItem
의 별칭 을 사용하는 것입니다 ls
.
ls 'C:\nodejs' -Attributes ReparsePoint -Recurse
다음 중 하나를 수행하여 심볼릭 링크에 대한 관련 정보를 얻을 수 있습니다.
파일 항목을 가져 와서 Target 속성을 출력하십시오 . 대상은 심볼릭 링크의 "값"입니다. 또한 운영 체제 간 병치시 심볼릭 링크를 작성하기위한 메소드 또는 명령 시그니처에서 인수 이름 'target', 'path'및 / 또는 'value'는 다른 OS에서 다른 메소드 시그니처와 다른 의미를 가질 수 있습니다.
E:\AIT> Get-Item -Path 'C:\nodejs\bin\ionic.cmd' | Select-Object -ExpandProperty Target
E:\AIT\out\dependency_symlink.cmd
파일 항목을 가져 와서 LinkType 속성을 출력하십시오 . LinkType 값이 SymbolicLink 인 항목은 그 상징적임을 의미합니다.
E:\AIT> Get-Item -Path 'C:\nodejs\bin\ionic.cmd' | Select-Object -ExpandProperty LinkType
SymbolicLink
파일 항목을 가져 와서 Mode 속성을 출력하십시오 . l
모드 값에 있는 항목은 해당 항목이 심볼릭 링크임을 나타냅니다.
E:\AIT> Get-Item -Path 'C:\nodejs\bin\ionic.cmd' | Select-Object -ExpandProperty Mode
-a---l
파일 항목을 가져 와서 속성 속성을 출력하십시오 . 아이템은 ReparsePoint 값 기인 어쩌면 심볼릭 링크를 나타내는.
E:\AIT> Get-Item -Path 'C:\nodejs\bin\ionic.cmd' | Select-Object -ExpandProperty Attributes
Archive, ReparsePoint
fsutil
항목이 기호 링크인지 여부를 확인하는 데 사용하지 마십시오 . 처음에는 errorlevel에 오류가 있기 때문에 때때로 0으로 유지되고 실제 폴더는 심볼릭 링크로 표시됩니다. 오류 수준을 신뢰할 수 없습니다.
문제 find
는 find "Symbolic Link"
영어로는 가능하지만 다른 언어로는 불가능 하기 때문 입니다.
좋은 방법은 속성에서 검색하는 것입니다.
for %%i in ("%file_to_test%") do set attribute=%%~ai
set attribute=%attribute:~8,1%
if "%attribute%" == "l" (
echo It's a symlink!
) else (
echo Damned! It's real!
)
% a가있는 속성은 "drahscotlep"이고 "l"은 기호 링크입니다.
Powershell에서 :
dir | select Name, LinkType
@SecurityAndPrivacyGuru의 모든 크레딧 , [cmd]
폴더의 symlink {| s}를 읽고 해당 경로 및 대상 경로와 함께 목록을 출력하는 완전한 배치 스크립트 / 기능
@echo off
setlocal enableExtensions enableDelayedExpansion
cd /D "%~dp0"
set br=^
rem br;
set "pafIf=<<pafToSymlink|pafToFolder>>"
set "gIfZsymLink="
for /f "tokens=*" %%q in ('dir "!pafIf!" /al /b') do (
for /f "tokens=2 delims=[]" %%r in ('dir /al ^| findstr /i /c:"%%q"') do (
set "gIfZsymLink=!gIfZsymLink!%%~fq>%%r!br!"
)
)
set "gIfZsymLink=!gIfZsymLink:~0,-1!"
rem echo "!gIfZsymLink!"
for /f "tokens=1,2 delims=>" %%q in ("!gIfZsymLink!") do (
echo symlink: %%q , filepath: %%r
)
:scIn
rem endlocal
pause
rem exit /b
실제로 fsutil을 사용하려면 두 기술을 모두 사용하여 오류가 발생하지 않도록 할 수 있습니다. (나는 ver> nul을 사용하여 오류 수준을 재설정합니다)
:function_is_symlink_file_folder item_to_test result
rem 0 = Error
rem 1 = Symlink
rem 2 = File
rem 3 = Folder
:function_is_symlink_file_folder
setlocal enabledelayedexpansion
set item_to_test=!%~1!
set /a result=0
for %%i in ("%item_to_test%") do set attributes=%%~ai
set attribute_1=%attributes:~0,1%
set attribute_9=%attributes:~8,1%
ver >nul
fsutil reparsepoint query "%item_to_test%" >nul
if %errorlevel% == 1 (
if "%attribute_1%" == "d" (
set /a result=3
) else (
set /a result=2
)
) else (
if "%attribute_9%" == "l" (
set /a result=1
) else (
if "%attribute_1%" == "d" (
set /a result=3
) else (
set /a result=2
)
)
)
endlocal & set /a %~2=%result%
goto :eof