String Manipulation in Batch Scripting

From binaryoption
Jump to navigation Jump to search
Баннер1

```wiki

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

معالجة السلاسل النصية هي جزء أساسي من كتابة برمجة الدفعات (Batch Programming) فعالة وقوية. تسمح لك بالتعامل مع النصوص، واستخراج أجزاء منها، وتعديلها، ودمجها، مما يفتح الباب أمام مجموعة واسعة من التطبيقات. هذه المقالة موجهة للمبتدئين وتهدف إلى تقديم شرح شامل لتقنيات معالجة السلاسل النصية في سكريبتات الدفعات.

مفاهيم أساسية

قبل البدء في التفاصيل، من المهم فهم بعض المفاهيم الأساسية:

  • السلسلة النصية: هي سلسلة من الأحرف، مثل "Hello, world!" أو "12345".
  • المتغير: هو اسم يشير إلى قيمة، في هذه الحالة، سلسلة نصية. يمكنك تخزين السلاسل النصية في المتغيرات لاستخدامها لاحقاً.
  • الوسيطات (Arguments): القيم التي يتم تمريرها إلى سكريبت الدفعات عند تشغيله.

تعريف المتغيرات

لتعريف متغير يحتوي على سلسلة نصية، استخدم الأمر `set`:

Admin (talk)batch set myString=Hello, world! echo %myString% Admin (talk)

سيقوم هذا الكود بعرض "Hello, world!" على الشاشة. لاحظ استخدام علامات النسبة المئوية (`%`) للإشارة إلى قيمة المتغير.

الوصول إلى أجزاء من السلسلة النصية

أحد أهم جوانب معالجة السلاسل النصية هو القدرة على الوصول إلى أجزاء محددة من السلسلة. هناك عدة طرق لتحقيق ذلك في سكريبتات الدفعات:

  • استخدام المتغيرات الفرعية (Substrings): يمكنك استخراج جزء من سلسلة نصية باستخدام بناء الجملة التالي:
   Admin (talk)batch
   set myString=This is a test string
   set subString=%myString:~5,4%
   echo %subString%
   Admin (talk)
   في هذا المثال، `%myString:~5,4%` يستخرج 4 أحرف بدءاً من الموضع الخامس (تذكر أن العد يبدأ من الصفر).  سيتم عرض "is a" على الشاشة.
  • استخدام الأمر `for` مع توسيع المتغيرات: يمكنك استخدام حلقة `for` لتكرار الأحرف في سلسلة نصية والوصول إليها بشكل فردي. هذه الطريقة أكثر تعقيداً ولكنها توفر مرونة أكبر.
   Admin (talk)batch
   set myString=Hello
   for %%a in (%myString%) do echo %%a
   Admin (talk)
   سيقوم هذا الكود بعرض كل حرف من "Hello" على سطر منفصل.

عمليات معالجة السلاسل النصية الشائعة

  • دمج السلاسل النصية: يمكنك دمج سلسلتين نصيتين أو أكثر باستخدام علامة العطف (`&`):
   Admin (talk)batch
   set string1=Hello
   set string2=, world!
   set combinedString=%string1%&%string2%
   echo %combinedString%
   Admin (talk)
   سيتم عرض "Hello, world!" على الشاشة.
  • استبدال السلاسل النصية: يمكنك استبدال جزء من سلسلة نصية بسلسلة نصية أخرى باستخدام الأمر `set /a`. هذه الطريقة تتطلب بعض الحيل لأن سكريبتات الدفعات لا تحتوي على وظيفة استبدال مدمجة.
   Admin (talk)batch
   set myString=This is a test string
   set searchString=test
   set replaceString=sample
   setlocal enabledelayedexpansion
   set newString=!myString:%searchString%=%replaceString%!
   echo %newString%
   endlocal
   Admin (talk)
   في هذا المثال، يتم استبدال "test" بـ "sample" في `myString`.  لاحظ استخدام `setlocal enabledelayedexpansion` و `!myString!`  هذا ضروري للتعامل مع المتغيرات التي تتغير داخل حلقة أو كتلة أوامر.  بدون هذا، لن يتم تحديث قيمة المتغير بشكل صحيح.
  • إزالة المسافات البيضاء: يمكنك إزالة المسافات البيضاء الزائدة من بداية ونهاية السلسلة النصية باستخدام حلقة `for` وبعض المنطق.
   Admin (talk)batch
   set myString=   This is a string with leading and trailing spaces   
   set myString=%myString: =%
   echo "%myString%"
   Admin (talk)
  • تحويل الحالة (Case Conversion): لا توجد أوامر مدمجة لتحويل حالة الأحرف (تحويل إلى أحرف كبيرة أو صغيرة) في سكريبتات الدفعات. يمكنك استخدام برامج خارجية أو حلول أكثر تعقيداً لتحقيق ذلك.

مقارنة السلاسل النصية

يمكنك مقارنة السلاسل النصية باستخدام عامل التشغيل `==`:

Admin (talk)batch set string1=Hello set string2=Hello if "%string1%"=="%string2%" (

 echo The strings are equal

) else (

 echo The strings are not equal

) Admin (talk)

لاحظ استخدام علامات التنصيص حول المتغيرات عند المقارنة. هذا يمنع الأخطاء في حالة كانت قيمة المتغير فارغة.

التعامل مع الوسيطات

يمكنك الوصول إلى الوسيطات التي يتم تمريرها إلى سكريبت الدفعات باستخدام المتغيرات `%1`، `%2`، `%3`، وهكذا. `%0` يشير إلى اسم السكريبت نفسه.

Admin (talk)batch @echo off echo Script name: %0 echo First argument: %1 echo Second argument: %2 Admin (talk)

إذا قمت بتشغيل هذا السكريبت باستخدام الأمر `myscript.bat arg1 arg2`، فسيتم عرض:

Admin (talk) Script name: myscript.bat First argument: arg1 Second argument: arg2 Admin (talk)

أمثلة عملية

  • التحقق من وجود ملف:
   Admin (talk)batch
   set filePath=%1
   if exist "%filePath%" (
     echo File exists
   ) else (
     echo File does not exist
   )
   Admin (talk)
  • استخراج اسم الملف من مسار كامل:
   Admin (talk)batch
   set filePath=%1
   for %%a in ("%filePath%") do set fileName=%%~nxa
   echo File name: %fileName%
   Admin (talk)
  • استخراج امتداد الملف:
   Admin (talk)batch
   set filePath=%1
   for %%a in ("%filePath%") do set fileExtension=%%~xa
   echo File extension: %fileExtension%
   Admin (talk)

نصائح وأفضل الممارسات

  • استخدم `setlocal enabledelayedexpansion` بحذر: على الرغم من أنه ضروري في بعض الحالات، إلا أن استخدامه المفرط يمكن أن يجعل الكود أكثر صعوبة في القراءة والصيانة.
  • ضع المتغيرات بين علامات تنصيص عند المقارنة: هذا يمنع الأخطاء في حالة كانت قيمة المتغير فارغة.
  • استخدم التعليقات لشرح الكود: هذا يجعل الكود أسهل في الفهم والصيانة.
  • اختبر الكود الخاص بك جيداً: تأكد من أن الكود الخاص بك يعمل بشكل صحيح في جميع الحالات المتوقعة.

روابط مفيدة

آمل أن تكون هذه المقالة قد قدمت لك فهماً جيداً لمعالجة السلاسل النصية في سكريبتات الدفعات. مع الممارسة، ستتمكن من استخدام هذه التقنيات لكتابة سكريبتات قوية وفعالة. ```

ابدأ التداول الآن

سجّل في IQ Option (الحد الأدنى للإيداع 10 دولار) افتح حساباً في Pocket Option (الحد الأدنى للإيداع 5 دولار)

انضم إلى مجتمعنا

اشترك في قناة Telegram الخاصة بنا @strategybin لتصلك: ✓ إشارات تداول يومية ✓ تحليلات استراتيجية حصرية ✓ تنبيهات اتجاهات السوق ✓ مواد تعليمية للمبتدئين

Баннер