использование переменных из VBScript в пакетном режиме - PullRequest
2 голосов
/ 10 апреля 2019

Я хочу передать переменные из VBScript в пакет, но это не сработает.

Мой VBScript:

Dim shell  
Set shell = CreateObject("WScript.Shell")
strnaam = InputBox ("naam")

и мой пакет:

@echo off
cls
echo %strnaam%
pause

Я хочу переменную strnaam из моего VBScript в мой пакет.

Ответы [ 2 ]

3 голосов
/ 10 апреля 2019

Наиболее очевидный способ - запустить как команду For /F и сохранить возвращенный результат как переменную:

@Echo Off

:NaamBox
Set "naam="
(Echo WScript.Echo InputBox("Naam:"^))>"%TEMP%\naam.vbs"
For /F Delims^=^ EOL^= %%A In ('CScript //NoLogo "%TEMP%\naam.vbs"')Do Set "naam=%%A"
If Not Defined naam GoTo NaamBox
Del "%TEMP%\naam.vbs"

Echo Uw naam is %naam%
Pause

Если вам не нравитсяИдея написать, запустить, а затем удалить файл, вы также можете встроить свой VBScript в пакетный файл:

<!-- :
@Echo Off
Echo Typ gelieve uw naam in de popup doos en OK te selecteren
For /F Delims^=^ EOL^= %%A In ('CScript //NoLogo "%~f0?.wsf"')Do Set "naam=%%A"
If Defined naam Echo Uw naam is %naam%&Pause
Exit /B
-->
<Job><Script Language="VBScript">
    WScript.Echo InputBox("Naam:")
</Script></Job>
1 голос
/ 10 апреля 2019

Вы можете передавать переменные только через переменные окружения:

  1. Файл create_variable.vbs:
Dim WshShell, WshEnv
Set WshShell = CreateObject("WScript.Shell")
Set WshEnv = WshShell.Environment("USER") ' can be either SYSTEM, USER, VOLATILE OR PROCESS
' current value
WScript.Echo "Process: NAAM=" & WshEnv.Item("NAAM")
WshEnv("NAAM") = "This text will appear in batch"
WScript.Echo "Process: NAAM=" & WshEnv.Item("NAAM")
Set WshEnv = Nothing
Set WshShell = Nothing
Затем batch file show_vbs_variable.bat (вам нужно открыть новый cmd.exe, чтобы получить новую переменную там! Если вам нужна дополнительная информация здесь - это тема для SOчто покрывает это .:
@echo off
cls
echo %naam%
pause
vbs скрипт для очистки переменной clearing_variable.vbs:
Dim WshShell, WshEnv
Set WshShell = CreateObject("WScript.Shell")
Set WshEnv = WshShell.Environment("USER") ' can be either SYSTEM, USER, VOLATILE OR PROCESS
' current value
WScript.Echo "Process: NAAM=" & WshEnv.Item("NAAM")
'Deleting the env variable
WshEnv.Remove("NAAM")
WScript.Echo "Process: NAAM=" & WshEnv.Item("NAAM")
Set WshEnv = Nothing
Set WshShell = Nothing
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...