[flash] تعيين أمر الإخراج إلى متغير في ملف دفعي


Answers

هذا المنصب لديه طريقة لتحقيق ذلك

من (zvrba) يمكنك القيام بذلك عن طريق إعادة توجيه الإخراج إلى ملف أولاً. فمثلا:

echo zz > bla.txt
set /p VV=<bla.txt
echo %VV%
Question

أحاول تعيين إخراج أمر لمتغير - كما في ، أحاول تعيين إصدار الفلاش الحالي إلى متغير. أعلم أن هذا خطأ ، ولكن هذا هو ما جربته:

set var = reg query hklm \ SOFTWARE \ Macromedia \ FlashPlayer \ CurrentVersion>

أو

reg query hklm \ SOFTWARE \ Macromedia \ FlashPlayer \ CurrentVersion >> set var

نعم ، كما ترون أنا ضائع قليلاً. أي مساعدة وجميع هو موضع تقدير!




حسنا هنا بعض عينة أكثر تعقيدا لاستخدام For / F

:: Main
@prompt -$G
    call :REGQUERY  "Software\Classes\CLSID\{3E6AE265-3382-A429-56D1-BB2B4D1D}"

@goto :EOF

:REGQUERY
:: Checks HKEY_LOCAL_MACHINE\ and HKEY_CURRENT_USER\ 
:: for the key and lists its content

    @call :EXEC "REG QUERY  HKCU\%~1"
    @call :EXEC "REG QUERY "HKLM\%~1""

@goto :EOF    

:EXEC
    @set output=

    @for /F "delims=" %%i in ('%~1 2^>nul') do @(
        set output=%%i
    )

    @if not "%output%"=="" (
        echo %1 -^> %output%
    )

@goto :EOF

لقد قمت بتعبئتها في الوظيفة الفرعية : EXEC بحيث لا تتسبب كل تفاصيل التنفيذ السيئة في النص الرئيسي. حتى حصلت على بعض كيندا بعض البرنامج التعليمي دفعة. ملاحظات "bout التعليمة البرمجية:

  1. الإخراج من الأمر الذي تم تنفيذه عبر الاتصال: يتم تخزين الأمر EXEC في ٪ output٪ . لا يهتم Batch cmd بالنطاقات لذا سيكون٪ output٪ متاحًا أيضًا في البرنامج النصي الرئيسي.
  2. @ البداية هي مجرد زخرفة وهناك لمنع صدى سطر الأوامر. يمكنك حذفهم جميعًا ووضع بعض echo في السطر الأول لا يعجبني ذلك حقًا. ولكن مثل هذا أجد التصحيح أكثر من ذلك بكثير لطيفة. الديكور رقم اثنين هو موجه - $ G. هناك لجعل موجه الأوامر تبدو مثل هذا ->
  3. يمكنني استخدام :: بدلا من ريم
  4. التيلدا (~) في ٪ ~ 1 هي إزالة علامات الاقتباس من الوسيطة الأولى
  5. 2 ^> نول هناك لمنع / تجاهل إخراج الخطأ stderr . عادة سوف تفعل ذلك عبر 2> نول . كذلك يتجنب ^ الهروب دفعة الهروب هناك لحل مبكر معيد التوجيه (>). هناك بعض simulare استخدام في وقت لاحق قليلا في البرنامج النصي: echo %1 -^>... لذلك هناك ^ يجعل من الممكن الإخراج '>' عبر صدى ما لم يكن ممكنا آخر.
  6. حتى إذا كانت المقارنة فيif @if not "%output%"=="" تشبه لغات البرمجة الأكثر شيوعًا - فقد تكون مختلفة كنت تتوقعها (إذا لم تكن معتادًا على MS-batch). حسنا إزالة "@" في البداية. دراسة الانتاج. قم بتغييره إلى not %output%=="" -rerun واعتبر سبب عدم نجاح ذلك. ؛)



Links