لا يمكن لأمر Windows ECHO صدى متغيرا في مجموعة المستخدمين
-
19-09-2019 - |
سؤال
ماذا فعلت لإبرام قذيفة 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
لا يتم تضمينه، وهو أمر طبيعي إلى حد ما وسيطات سطر الأوامر بشكل عام.