اختبار لسمة الملف في ملف دفعي
-
23-08-2019 - |
سؤال
أنا أكتب ملف دفعي وأحتاج إلى معرفة ما إذا كان يتم قراءة الملف فقط. كيف أقوم بذلك ؟
أنا أعرف كيفية الحصول عليها باستخدام٪ ~ المعدل ولكن لا أعرف ماذا أفعل مع هذا الإخراج. انه يعطي شيئا مثل أرا ------. كيف يمكنني تحليل هذا في ملف دفعي؟
المحلول
شيء من هذا القبيل يجب أن تعمل:
@echo OFF
SETLOCAL enableextensions enabledelayedexpansion
set INPUT=test*
for %%F in (%INPUT%) do (
set ATTRIBS=%%~aF
set CURR_FILE=%%~nxF
set READ_ATTRIB=!ATTRIBS:~1,1!
@echo File: !CURR_FILE!
@echo Attributes: !ATTRIBS!
@echo Read attribute set to: !READ_ATTRIB!
if !READ_ATTRIB!==- (
@echo !CURR_FILE! is read-write
) else (
@echo !CURR_FILE! is read only
)
@echo.
)
عندما أقوم بتشغيل هذا أحصل على الإخراج التالي:
ملف: اختبار. Test.SQL تتم قراءة الملف فقط: Test.vbs سمات: - ------ قراءة السمة المضطربة على: - test.vbs هو ملف قراءة الكتابة: teststring.txt السمات: - ----- - قراءة السمة المضطربة إلى: - teststring.txt هو قراءة الكتابة
نصائح أخرى
لاختبار ملف معين:
dir /ar yourFile.ext >nul 2>nul && echo file is read only || echo file is NOT read only
للحصول على قائمة بملفات قراءة فقط
dir /ar *
للحصول على قائمة بملفات القراءة / الكتابة
dir /a-r *
لسرد جميع الملفات والتقرير ما إذا كان القراءة فقط أو القراءة / الكتابة:
for %%F in (*) do dir /ar "%%F" >nul 2>nul && echo Read Only: %%F|| echo Read/Write: %%F
تعديل
إجابة باتريك فشل إذا كان اسم الملف يحتوي على !
. وبعد يمكن حل هذا عن طريق تبديل التوسع المتأخر وإيقاف تشغيله داخل الحلقة، ولكن هناك طريقة أخرى للتحقيق %%~aF
القيمة دون اللجوء إلى تأخير التوسع، أو حتى متغير بيئة:
for %%F in (*) do for /f "tokens=1,2 delims=a" %%A in ("%%~aF") do (
if "%%B" equ "" (
echo "%%F" is NOT read only
) else (
echo "%%F" is read only
)
)
لا تنتمي إلى StackOverflow