الملفات الدفعية لإنشاء وحذف النص إلى ملف Windows hosts باستخدام برنامج جدولة المهام
-
21-12-2019 - |
سؤال
الهدف هو استخدام برنامج جدولة المهام لحظر الفيسبوك من وقت محدد لزيادة الإنتاجية وتقليل عوامل التشتيت.لقد حذفت الفيسبوك لمدة سبعة أشهر.لا أريد استخدام برامج الطرف الثالث.الرجاء مساعدتي.أيضًا إذا كان لديك طريقة أسهل أو رمز أفضل، فيرجى إظهاره.
هذا ما لدي.
لدي هذا الملف الدفعي = blockfacebook.bat الذي تم تنفيذه في وقت معين والذي يعمل:
صدى 0.0.0.0 www.facebook.com >> c:\windows\system32\drivers\etc\hosts
على الرغم من أن الملف الدفعي التالي = unblockfacebook.bat يؤدي إلى إفراغ ملف المضيفين تمامًا:
اكتب C: Windows System32 Drivers etc Hosts | FindStstr /V Facebook> c: windows system32 drivers etc hosts
هل يمكن لأحد أن يقول لي ما الخطأ الذي أفعله مع unblockfacebook.bat
شكرًا لك،
إيجيس
المحلول
@echo off
setlocal enableextensions disabledelayedexpansion
set "file=c:\windows\system32\drivers\etc\hosts"
for /f "tokens=* delims=0123456789" %%a in (
'findstr /n /i /v /c:"facebook" "%file%" ^& type nul ^> "%file%"'
) do (
set "line=%%a"
setlocal enabledelayedexpansion
>>"%file%" echo(!line:~1!
endlocal
)
endlocal
يستخدم هذا الرمز findstr
لتصفية خطوط الإدخال وترقيم المخرجات (يضمن ترقيم الأسطر قراءة الأسطر الفارغة في ملف الإدخال ومعالجتها وكتابتها للإخراج)، وإزالة محتوى ملف الإدخال.مثل for /f
قام بتخزين مخرجات findstr
في الذاكرة، و findstr
لقد انتهت عملية معالجة البيانات، فلا توجد مشكلة في القيام بذلك.
ثم for
يبدأ في معالجة المدخلات (مخرجات findstr
).إنها قائمة من الخطوط المرقمة.لإزالة الأرقام، يتم استخدامها كمحددات في for
يأمر.عندما تبدأ الأسطر بمحددات، تتم إزالتها حتى يتم العثور على حرف غير محدد، النقطتين اللتين تفصلان الأرقام عن محتوى السطر (لم يتم استخدام النقطتين كمحدد لتجنب مشاكل الأسطر التي تبدأ بنقطتين على سبيل المثال بعض عناوين ipv6 )
الآن، مع إزالة الأرقام من البداية، كل ما يجب القيام به هو إزالة الحرف الأول وإلحاق الأسطر بملف الإدخال/الإخراج (الذي تم إفراغه).
نصائح أخرى
هذا هو الحل الذي أحسبته عندما قرأت هذا.على الرغم من أن الطرق أكثر فعالية أو بديلة دائما موضع تقدير.