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

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
posted @ 2022-09-01 13:49  CharyGao  阅读(22)  评论(0)    收藏  举报