vbs 遍历文件,batch file (windows cmd.exe) test if a directory is a link (symlink)@DefaultChrome
Set ObjWS = WScript.CreateObject("wscript.shell")
currentDir=ObjWS.CurrentDirectory
Set ObjFSO = CreateObject("Scripting.FileSystemObject")
Dim filesTree
filesTree = "." & vbCrLf
Call SearchFolder(currentDir)
Msgbox filesTree
Sub FilesInFolder(folderPath)
Set ObjFolder=objFSO.GetFolder(folderPath)
Set files=ObjFolder.files
For Each file In files
filesTree = filesTree & "-" & file.name & vbCrLf
Next
End Sub
Sub SearchFolder(folderPath)
Set ObjFolder=objFSO.GetFolder(folderPath)
Set SubFolders=ObjFolder.SubFolders
FilesInFolder(folderPath)
if SubFolders.Count =0 then
'msgbox "exit search:" & folderPath
exit Sub
end if
For Each subFolder In SubFolders
'MsgBox subFolder.path
filesTree = filesTree & subFolder.path & vbCrLf
SearchFolder(subFolder.path)
Next
End Sub
You have three methods
Solution 1: fsutil reparsepoint
Use symlink/junction with fsutil reparsepoint query and check %errorlevel% for success, like this:
set tmpfile=%TEMP%\%RANDOM%.tmp
fsutil reparsepoint query "%DIR%" >"%tmpfile%"
if %errorlevel% == 0 echo This is a symlink/junction
if %errorlevel% == 1 echo This is a directory
This works, because fsutil reparsepoint query can't do anything on a standard directory and throws an error. But the permission error causes %errorlevel%=1 too!
Solution 2: dir + find
List links of the parent directory with dir, filter the output with find and check %errorlevel% for success, like this:
set tmpfile=%TEMP%\%RANDOM%.tmp
dir /AL /B "%PARENT_DIR%" | find "%NAME%" >"%tmpfile%"
if %errorlevel% == 0 echo This is a symlink/junction
if %errorlevel% == 1 echo This is a directory
Solution 3: for (the best)
Get attributes of the directory with for and check the last from it, because this indicates links. I think this is smarter and the best solution.
for %i in ("%DIR%") do set attribs=%~ai
if "%attribs:~-1%" == "l" echo This is a symlink/junction
FYI: This solution is not dependent on %errorlevel%, so you can check "valid errors" too!
Sources
- http://blogs.technet.com/b/filecab/archive/2013/02/14/dfsr-reparse-point-support-or-avoiding-schr-246-dinger-s-file.aspx
- How to get attributes of a file using batch file
CHCP 65001
@echo off
set link=%1
FOR /F "tokens=2 delims==" %%a in ('wmic path win32_shortcutfile where "name='%link:\=\\%'" get target /value') do explorer %%~dpa
@REM type "%1"|find "\" | findStr /R /C:"[^\\]$"
@DefaultChrome
@ECHO OFF&(PUSHD "%~DP0")&(REG QUERY "HKU\S-1-5-19">NUL 2>&1)||(powershell -Command "Start-Process '%~sdpnx0' -Verb RunAs"&&EXIT)
COLOR 2F & TITLE "SetChromeAsDefaultBrowser" & CHCP 65001
REGEDIT /S "%~DP0centBrowserDel.reg"
SET CHROME_PATH=%~DP0chrome.exe
ECHO %CHROME_PATH%
REG ADD "HKLM\SOFTWARE\Classes\file\shell\open\command" /ve /t REG_EXPAND_SZ /d "\"%CHROME_PATH%\" \"%%1\"" /F
REG ADD "HKLM\SOFTWARE\Classes\ftp\shell\open\command" /ve /t REG_EXPAND_SZ /d "\"%CHROME_PATH%\" \"%%1\"" /F
REG ADD "HKLM\SOFTWARE\Classes\htmlfile\shell\open\command" /ve /t REG_EXPAND_SZ /d "\"%CHROME_PATH%\" \"%%1\"" /F
REG ADD "HKLM\SOFTWARE\Classes\http\shell\open\command" /ve /t REG_EXPAND_SZ /d "\"%CHROME_PATH%\" \"%%1\"" /F
REG ADD "HKLM\SOFTWARE\Classes\https\shell\open\command" /ve /t REG_EXPAND_SZ /d "\"%CHROME_PATH%\" \"%%1\"" /F
REG ADD "HKLM\SOFTWARE\Classes\IE.AssocFile.HTM\shell\open\command" /ve /t REG_EXPAND_SZ /d "\"%CHROME_PATH%\" \"%%1\"" /F
REG ADD "HKLM\SOFTWARE\Classes\IE.AssocFile.HTM\shell\opennew\command" /ve /t REG_EXPAND_SZ /d "\"%CHROME_PATH%\" \"%%1\"" /F
REG ADD "HKLM\SOFTWARE\Classes\IE.AssocFile.MHT\shell\open\command" /ve /t REG_EXPAND_SZ /d "\"%CHROME_PATH%\" \"%%1\"" /F
REG ADD "HKLM\SOFTWARE\Classes\IE.AssocFile.MHT\shell\opennew\command" /ve /t REG_EXPAND_SZ /d "\"%CHROME_PATH%\" \"%%1\"" /F
REG ADD "HKLM\SOFTWARE\Classes\IE.AssocFile.PARTIAL\shell\open\command" /ve /t REG_EXPAND_SZ /d "\"%CHROME_PATH%\" \"%%1\"" /F
REG ADD "HKLM\SOFTWARE\Classes\IE.AssocFile.SVG\shell\open\command" /ve /t REG_EXPAND_SZ /d "\"%CHROME_PATH%\" \"%%1\"" /F
REG ADD "HKLM\SOFTWARE\Classes\IE.AssocFile.SVG\shell\opennew\command" /ve /t REG_EXPAND_SZ /d "\"%CHROME_PATH%\" \"%%1\"" /F
REG ADD "HKLM\SOFTWARE\Classes\IE.AssocFile.XHT\shell\open\command" /ve /t REG_EXPAND_SZ /d "\"%CHROME_PATH%\" \"%%1\"" /F
REG ADD "HKLM\SOFTWARE\Classes\IE.AssocFile.XHT\shell\opennew\command" /ve /t REG_EXPAND_SZ /d "\"%CHROME_PATH%\" \"%%1\"" /F
REG ADD "HKLM\SOFTWARE\Classes\IE.FTP\shell\open\command" /ve /t REG_EXPAND_SZ /d "\"%CHROME_PATH%\" \"%%1\"" /F
REG ADD "HKLM\SOFTWARE\Classes\IE.HTTP\shell\open\command" /ve /t REG_EXPAND_SZ /d "\"%CHROME_PATH%\" \"%%1\"" /F
REG ADD "HKLM\SOFTWARE\Classes\IE.HTTPS\shell\open\command" /ve /t REG_EXPAND_SZ /d "\"%CHROME_PATH%\" \"%%1\"" /F
REG ADD "HKLM\SOFTWARE\Classes\xmlfile\shell\Open\command" /ve /t REG_EXPAND_SZ /d "\"%CHROME_PATH%\" \"%%1\"" /F
REG ADD "HKLM\SOFTWARE\Classes\xslfile\shell\Open\command" /ve /t REG_EXPAND_SZ /d "\"%CHROME_PATH%\" \"%%1\"" /F
REG ADD "HKCR\file\shell\open\command" /ve /t REG_EXPAND_SZ /d "\"%CHROME_PATH%\" \"%%1\"" /F
REG ADD "HKCR\ftp\shell\open\command" /ve /t REG_EXPAND_SZ /d "\"%CHROME_PATH%\" \"%%1\"" /F
REG ADD "HKCR\htmlfile\shell\open\command" /ve /t REG_EXPAND_SZ /d "\"%CHROME_PATH%\" \"%%1\"" /F
REG ADD "HKCR\http\shell\open\command" /ve /t REG_EXPAND_SZ /d "\"%CHROME_PATH%\" \"%%1\"" /F
REG ADD "HKCR\https\shell\open\command" /ve /t REG_EXPAND_SZ /d "\"%CHROME_PATH%\" \"%%1\"" /F
REG ADD "HKCR\IE.AssocFile.HTM\shell\open\command" /ve /t REG_EXPAND_SZ /d "\"%CHROME_PATH%\" \"%%1\"" /F
REG ADD "HKCR\IE.AssocFile.HTM\shell\opennew\command" /ve /t REG_EXPAND_SZ /d "\"%CHROME_PATH%\" \"%%1\"" /F
REG ADD "HKCR\IE.AssocFile.MHT\shell\open\command" /ve /t REG_EXPAND_SZ /d "\"%CHROME_PATH%\" \"%%1\"" /F
REG ADD "HKCR\IE.AssocFile.MHT\shell\opennew\command" /ve /t REG_EXPAND_SZ /d "\"%CHROME_PATH%\" \"%%1\"" /F
REG ADD "HKCR\IE.AssocFile.PARTIAL\shell\open\command" /ve /t REG_EXPAND_SZ /d "\"%CHROME_PATH%\" \"%%1\"" /F
REG ADD "HKCR\IE.AssocFile.SVG\shell\open\command" /ve /t REG_EXPAND_SZ /d "\"%CHROME_PATH%\" \"%%1\"" /F
REG ADD "HKCR\IE.AssocFile.SVG\shell\opennew\command" /ve /t REG_EXPAND_SZ /d "\"%CHROME_PATH%\" \"%%1\"" /F
REG ADD "HKCR\IE.AssocFile.XHT\shell\open\command" /ve /t REG_EXPAND_SZ /d "\"%CHROME_PATH%\" \"%%1\"" /F
REG ADD "HKCR\IE.AssocFile.XHT\shell\opennew\command" /ve /t REG_EXPAND_SZ /d "\"%CHROME_PATH%\" \"%%1\"" /F
REG ADD "HKCR\IE.FTP\shell\open\command" /ve /t REG_EXPAND_SZ /d "\"%CHROME_PATH%\" \"%%1\"" /F
REG ADD "HKCR\IE.HTTP\shell\open\command" /ve /t REG_EXPAND_SZ /d "\"%CHROME_PATH%\" \"%%1\"" /F
REG ADD "HKCR\IE.HTTPS\shell\open\command" /ve /t REG_EXPAND_SZ /d "\"%CHROME_PATH%\" \"%%1\"" /F
REG ADD "HKCR\xmlfile\shell\open\command" /ve /t REG_EXPAND_SZ /d "\"%CHROME_PATH%\" \"%%1\"" /F
REG ADD "HKCR\xslfile\shell\open\command" /ve /t REG_EXPAND_SZ /d "\"%CHROME_PATH%\" \"%%1\"" /F
REG ADD "HKCR\.md\shell\open\command" /ve /t REG_EXPAND_SZ /d "\"%CHROME_PATH%\" \"%%1\"" /F
TIMEOUT 5
摘抄自网络,便于检索查找。

浙公网安备 33010602011771号