2011-01-30 28 views
4

我正在寫一個批處理文件(.bat),我無法找到一種方法來發現給定的目錄是否有真正的目錄或連接點(使用mklink /j在Windows 7上創建)。任何人都可以將我指向正確的方向嗎?如何使一個批處理文件發現一個目錄實際上是一個連接點?

+0

刪除了我的答案,因爲我意識到這是行不通的目錄路口作爲目錄下降到目錄,當給一個目錄作爲參數 – 2011-01-30 20:11:54

+0

噢好吧,我認爲這可能是問題。不管怎樣,謝謝你。 – ArmlessJohn 2011-01-30 20:15:10

回答

0

這是一個糟糕的技術,但fsutil reparsepoint query文件路徑將失敗(%ERRORLEVEL%將1)如果該文件是不是一個結和成功(%ERRORLEVEL%將爲0),如果它是一個。另一個問題是fsutil希望你成爲管理員。另外,並非所有重新分析點都是目錄連接點。

+1

+1在批處理腳本中沒有糟糕的事情;如果它能完成這項工作,那麼這是一件好事! ;-) – 2011-01-30 19:55:54

9

在一個批處理腳本,你可以使用以下命令:

SET Z=&& FOR %%A IN (linkfilename) DO SET Z=%%~aA 
IF "%Z:~8,1%" == "l" GOTO :IT_A_LINK 

這比調用DIR /AL更快。

%%~aA獲取「linkfilename」的屬性,
9炭串像d--------(目錄),
d-------l到一個目錄的鏈接,
--------l到一個文件的鏈接。

%Z:~8,1%然後抓取重解析點屬性。

2

我有這個小寶石,將列出所有路口和他們的目標在當前目錄:

for /F "delims=;" %j in ('dir /al /b') do @for /F "delims=[] tokens=2" %t in ('dir /a ^| findstr /C:"%j"') do @echo %j :: %t 

輸出示例:

Application Data :: C:\Users\AB029076\AppData\Roaming 
Cookies :: C:\Users\AB029076\AppData\Roaming\Microsoft\Windows\Cookies 
Local Settings :: C:\Users\AB029076\AppData\Local 
My Documents :: C:\Users\AB029076\Documents 
NetHood :: C:\Users\AB029076\AppData\Roaming\Microsoft\Windows\Network Shortcuts 
PrintHood :: C:\Users\AB029076\AppData\Roaming\Microsoft\Windows\Printer Shortcuts 
Recent :: C:\Users\AB029076\AppData\Roaming\Microsoft\Windows\Recent 
SendTo :: C:\Users\AB029076\AppData\Roaming\Microsoft\Windows\SendTo 
Start Menu :: C:\Users\AB029076\AppData\Roaming\Microsoft\Windows\Start Menu 
Templates :: C:\Users\AB029076\AppData\Roaming\Microsoft\Windows\Templates 
TestLink :: C:\Users\AB029076\AppData\Roaming\Microsoft\Windows\Network Shortcuts 
相關問題