batch file - هتا و دفعة الهجين، متغيرات تمرير من قسم دفعة



batch-file vbscript (1)

أنا أحاول أن أكتب دفعة + هتا الهجين النصي الذي سيسمح لي لتمرير المتغيرات من قسم دفعة من البرنامج النصي إلى القسم هتا، وبهذه الطريقة يمكنني توليد أشياء مثل رقم طراز أجهزة الكمبيوتر الخ

هذا هو ما لدي حتى الآن - دفعة:

<!-- :: Batch section
    @echo off
    Pushd "%~dp0"
    setlocal

    FOR /F "tokens=2 delims='='" %%A in ('wmic ComputerSystem Get Model /value') do SET model=%%A

    for /F "delims=" %%a in ('mshta.exe "%~F0" "%model%"') do set "HTAreply=%%a"
    echo End of HTA window, reply: "%HTAreply%"
    goto :EOF
    -->

كما ترون حاولت استخدام %model% كمعلمة، وحاولت استخدام arg1 في قسم arg1 بي في محاولة لاستخدام هذا المتغير - لكنه لم ينجح.

حتى في بلدي هتا القسم، هذا هو بلدي فسكريبت:

<script language="VBScript">

    MsgBox arg1

</script>

الذي يفتح للتو مربع فارغ.

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

أي مساعدة سيكون محل تقدير كبير


يمكنك الوصول إلى متغيرات البيئة في وقت تشغيل هتا باستخدام كائن Environment Wscript.Shell كوم. يمكنك تمرير البيانات مرة أخرى من هتا إلى مؤشر الترابط دفعة عبر GetStandardStream الأسلوب Scripting.FileSystemObject GetStandardStream . في ما يلي عرض توضيحي لكل من:

<!-- :: Batch section
@echo off & setlocal
Pushd "%~dp0"

FOR /F "tokens=2 delims==" %%A in ('wmic ComputerSystem Get Model /value') do SET model=%%A

for /F "delims=" %%a in ('mshta.exe "%~f0"') do set "HTAreply=%%a"
echo End of HTA window, reply: "%HTAreply%"
goto :EOF
-->
<script language="VBScript">

    Set Env = CreateObject("Wscript.Shell").Environment("Process")
    Set StdOut = CreateObject("Scripting.FileSystemObject").GetStandardStream(1)

    MsgBox Env("model")
    StdOut.Write("response")

    Set Env = Nothing
    Set StdOut = Nothing

    close()

</script>

على ما يستحق، يمكنك أيضا الوصول إلى فسكريبت في شكل هجين باستخدام كسكريبت عن طريق كلودجينغ ملحق ملف .wsf. ميزة، إلى جانب التخلص من وميض وجيزة من نافذة هتا تظهر وتختفي، هو أنه يمكنك تمرير وسيطات النصي مباشرة دون الحاجة إلى الوصول إلى Environment("Process") النطاق.

<!-- : batch portion
@echo off & setlocal

FOR /F "tokens=2 delims==" %%A in ('wmic ComputerSystem Get Model /value') do SET model=%%A

for /F "delims=" %%a in ('cscript /nologo "%~f0?.wsf" "%model%"') do set "VBreply=%%a"
echo End of VB script, reply: "%VBreply%"

goto :EOF

: VBScript -->
<job>
    <script language="VBScript">
        model = WScript.Arguments(0)

        MsgBox model
        Wscript.Echo "response"
    </script>
</job>

والهجين دفعة + جسكريبت هو أسهل. ومن الممكن أيضا أن يكون كل من فسكريبت و جسكريبت التعليمات البرمجية وظائف متعددة مع أسلوب .wsf.





hta