كيف يمكنني جعل ملف دفعي اكتشاف ما إذا كان الدليل هو في الواقع تقاطع?

StackOverflow https://stackoverflow.com/questions/4845039

سؤال

أنا أكتب ملف دفعي (.بات) وأنا لا يمكن أن تجد وسيلة لاكتشاف ما إذا كان دليل معين لدي الطريق إلى هو دليل حقيقي أو تقاطع (التي تم إنشاؤها على ويندوز 7 باستخدام mklink /j).يمكن لأي شخص أن يشير لي في الاتجاه الصحيح?

هل كانت مفيدة؟

المحلول

هذا هو أسلوب رديء ولكن fsutil reparsepoint query المسار إلى الملف سوف تفشل (%ERRORLEVEL% سيكون 1) إذا كان الملف ليس تقاطع والنجاح (%ERRORLEVEL% سيكون 0) إذا كان واحدا.المشكلة الأخرى في هذا هي fsutil يريد منك أن تكون مسؤولا.بالإضافة إلى ذلك ، ليست كل نقاط إعادة التوزيع هي تقاطعات دليل.

نصائح أخرى

في برنامج نصي دفعة يمكنك استخدام ما يلي:

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

هذا أسرع من الاتصال DIR /AL.

ال %%~aA يحصل على سمات "لينكفيلنام",
أ 9 سلسلة شار مثل d-------- (دليل),
أو d-------l رابط إلى دليل,
أو --------l رابط إلى ملف.

%Z:~8,1% ثم يمسك فقط سمة نقطة إعادة التوزيع.

لدي هذه الأحجار الكريمة الصغيرة التي ستدرج جميع التقاطعات وأهدافها في دليلك الحالي:

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
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top