batch-file - شرح - how to make cmd batch file




انقسمت الأوامر الطويلة عبر خطوط متعددة في ملف دفعي(.bat) الخاص بنظام التشغيل Windows Vista (4)

كيف يمكنني جعل أوامر طويلة الانتقال عبر عدة أسطر في ملف دفعي Windows (Vista)؟


قاعدة حرف الإقحام هي:

حرف الإقحام في نهاية السطر ، إلحاق السطر التالي ، سيتم تجاوز الحرف الأول من السطر المرفق.
يمكنك استخدام علامة الإقحام عدة مرات ، ولكن لا يجب أن يتجاوز السطر الكامل الحد الأقصى لطول الخط 8192 حرفًا (XP / Vista / Win7).

echo Test1
echo one ^
two ^
three ^
four^
*
--- Output ---
Test1
one two three four*

echo Test2
echo one & echo two
--- Output ---
Test2
one
two

echo Test3
echo one & ^
echo two
--- Output ---
Test3
one
two

echo Test4
echo one ^
& echo two
--- Output ---
Test4
one & echo two

لمنع هروب الحرف التالي ، يمكنك استخدام إعادة توجيه.
يجب أن يكون إعادة التوجيه قبل علامة الإقحام. ولكن هناك فضول واحد مع إعادة توجيه قبل علامة الإقحام. إذا قمت بوضع رمز مميز في علامة الإقحام ، تتم إزالة الرمز المميز.

echo Test5
echo one <nul ^
& echo two
--- Output ---
Test5
one
two


echo Test6
echo one <nul ThisTokenIsLost^
& echo two
--- Output ---
Test6
one
two

ومن الممكن أيضًا تضمين خطوط التغذية في السلسلة

setlocal EnableDelayedExpansion
set text=This creates ^

a line feed
echo Test7: %text%
echo Test8: !text!
--- Output ---
Test7: This creates
Test8: This creates
a line feed

الخط الفارغ مهم للنجاح.
يعمل هذا فقط مع التوسيع المتأخر ، وإلا يتم تجاهل باقي السطر بعد تغذية السطر.

يعمل لأن حرف الإقحام عند نهاية السطر يتجاهل تغذية السطر التالي ويهرب من الحرف التالي ، حتى إذا كان الحرف التالي هو أيضًا سطر تغذية (يتم دائمًا تجاهل إرسالات العبور في هذه المرحلة).


ومع ذلك ، يبدو أن الانقسام في منتصف قيم حلقة for لا يحتاج إلى علامة إقحام (وسيحاول فعلاً استخدام أحدهما خطأ في بناء الجملة). فمثلا،

for %n in (hello
bye) do echo %n

لاحظ أنه لا توجد حاجة لمساحة حتى بعد التحية أو قبل اللقاء.


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

يمكنك تفكيك الخطوط الطويلة باستخدام علامة الإقحام ( ^ ) ، فقط تذكر أن علامة الإقحام والخط الجديد الذي يتبعها تتم إزالتهما بالكامل من الأمر ، لذلك إذا وضعتها في المكان الذي ستحتاج إليه المساحة (مثل بين المعلمات) ، تأكد من تضمين المساحة أيضًا (إما قبل ^ ، أو في بداية السطر التالي - قد يساعد هذا الخيار الأخير في جعله أكثر وضوحًا أنه استمرار).

أمثلة: (كل ما تم اختباره على Windows XP و Windows 7)

xcopy file1.txt file2.txt

يمكن كتابتها على النحو التالي:

xcopy^
 file1.txt^
 file2.txt

أو

xcopy ^
file1.txt ^
file2.txt

او حتى

xc^
opy ^
file1.txt ^
file2.txt

(هذا الأخير يعمل لأنه لا توجد مسافات بين xc و ^ ، ولا مسافات في بداية السطر التالي. لذلك عند إزالة ^ و السطر الجديد ، ستحصل على ... xcopy .)

من أجل قابلية القراءة والعقل ، فمن الأفضل أن يكون الاختراق بين المعلمات (تأكد من تضمين المساحة).

تأكد من أن ^ ليس آخر شيء في ملف دفعي ، حيث يبدو أن هناك مشكلة رئيسية في ذلك .


يمكنك قطع خطوط طويلة مع علامة الإقحام ^ طالما أنك تتذكر أن الإقحام والخط الجديد التالي لهما تمت إزالتهما بالكامل. لذا ، إذا كان يجب أن تكون هناك مساحة يتم فيها تقسيم الخط ، فأدخل مسافة. ( المزيد عن ذلك أدناه ) .

مثال:

copy file1.txt file2.txt

سوف تكتب على النحو التالي:

copy file1.txt^
 file2.txt






cmd