سؤال

ماذا فعلت لإبرام قذيفة CMD الخاصة بي؟ Windows XP Pro، افتح نافذة CMD وتفعل:

C:\>set tt = name

C:\>set tt
tt = name

C:\>echo %tt%
%tt%

C:\>echo %time%
14:13:28.67

أمر ECHO لا يعمل لسبب ما. يمكنني صدى المتغيرات المدمجة على ما يرام. حاول ذلك على كمبيوتر آخر وهذا يعمل كما هو متوقع

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

المحلول

ال set الأمر لا يأخذ مسافات. بناء الجملة المناسب سيكون:

set tt=name

ما قمت به في مثالك هو تعيين متغير بيئة tt<space>. وبعد مع وضع ذلك في الاعتبار، يمكنك تجربة هذا:

echo %tt%

ورؤية الإخراج الخاص بك.

نصائح أخرى

هل حاولت تحديد المتغير بدون مسافة بين المساواة؟ (تعيين TT = الاسم)

الإجابة الأكثر صعوبة هنا، قبلت بعيدة، يدعي أن:

"ال set الأمر لا يأخذ مسافات ".

ولكن هذا غير صحيح: %tt % المتغير يعمل فعلا: يمكن تعيينه والتم الرجوع إليها. (على الرغم من ذلك يكون مربك.)

مشكلة مستنسخة:

في الواقع، على بلدي WIN7:

C:\>set os
OS=Windows_NT

C:\>set tt = name
C:\>set tt2= name
C:\>set tt3=name
C:\>set tt
tt = name
tt2= name
tt3=name

حاولت وحصلت على:

C:\>echo "%os%"
"Windows_NT"

C:\>echo "%tt3%"
"name"
C:\>echo "%tt2%"
" name"
C:\>echo "%tt%"
"%tt%"

حل الحالات:

المتغير بشكل حدسي المتغير %tt% لم يتم تعيين. ولكن %tt % تم تعيين بدلا من ذلك:

C:\>echo "%tt %"
" name"

أكثر من ذلك، مع مساحة في نهاية القيمة، set tt4 = name :

C:\>echo "%tt4 %"
" name "

الاستنتاجات:

ال set الأمر لا trim():

  • يتم تضمين المساحة قبل "=" إلى var_name.
  • يتم تضمين المساحة بعد "=" إلى var_value.
  • الفضاء في نهاية var_value يتم تضمينها.

من ناحية أخرى:

  • الفضاء في بداية var_name لا يتم تضمينه، وهو أمر طبيعي إلى حد ما وسيطات سطر الأوامر بشكل عام.
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top