shiv7 Ответов: 1

Может ли кто - нибудь помочь в объяснении кода VB, используемого в пакетном файле


<pre lang="vb"><pre>
#I am using below code in bat file, but not able to understand the logic in below code since has never worked on vb. Please help me on understanding the below lines of code

:YesNoBox
REM returns 6 = Yes, 7 = No. Type=4 = Yes/No
set YesNo=
set MsgType=4
set heading=%~2
set message=%~1
echo wscript.echo msgbox(WScript.Arguments(0),%MsgType%,WScript.Arguments(1)) >"%temp%\input.vbs"
for /f "tokens=* delims=" %%a in ('cscript //nologo "%temp%\input.vbs" "%message%" "%heading%"') do set YesNo=%%a
exit /b

:MessageBox
set heading=%~2
set message=%~1
echo msgbox WScript.Arguments(0),0,WScript.Arguments(1) >"%temp%\input.vbs"
cscript //nologo "%temp%\input.vbs" "%message%" "%heading%"
exit /b


Что я уже пробовал:

Перешел по стольким ссылкам в google, но так и не смог найти внятных ответов
Красный о wscript и cscript но путают с переменными типа

в основном путают с
REM returns 6 = Yes, 7 = No. Type=4 = Yes/No
set YesNo=
set MsgType=4
set heading=%~2
set message=%~1
echo wscript.echo msgbox(WScript.Arguments(0),%MsgType%,WScript.Arguments(1)) >"%temp%\input.vbs


и

:MessageBox
set heading=%~2
set message=%~1
echo msgbox WScript.Arguments(0),0,WScript.Arguments(1) >"%temp%\input.vbs"
cscript //nologo "%temp%\input.vbs" "%message%" "%heading%"


Мне нужно понять каждую строку, упомянутую в приведенном выше коде

1 Ответов

Рейтинг:
1

OriginalGriff

Это не VB.
Это команды DOS / CMD, используемые внутри пакетного файла.
Установите, чтобы не манипулировать переменными окружения: Пакетные файлы - команда SET[^]
REM - это комментарий.
ECHO отображает текст для пользователя: Справка для всех команд Windows 2000 SP 4[^]
CSCRIPT запускает файл сценария: cscript | Microsoft Docs[^] - в этом случае он запускает файл VBS под названием INPUT.VBS из TEMP папка, и передает ей две переменные окружения, которые были предоставлены при выполнении исходного пакетного файла, но с любыми кавычками вокруг них удалены.


shiv7

Спасибо, но я знаю теоретические объяснения о wscript или cscript.

Я смущен тем, как он работает в сочетании с партией.

Как он использует переменные bat

Не могли бы вы объяснить приведенный выше код?

shiv7

Спасибо вам "он запускает файл VBS под названием INPUT.VBS из папки TEMP и передает ему две переменные окружения", очистив одно из моих сомнений.

Но как это работает:

REM возвращает 6 = Yes, 7 = No. Type=4 = Yes/No
установить YesNo=
установить MsgType=4
установить Заголовок=%~2
установить сообщение=%~1
Эхо объект WScript.эхо с помощью MsgBox(объект WScript.Аргументы(0),%MsgType%,WScript.Аргументы(1))

я запутался в %MsgType% ??, REM возвращает 6 = Yes, 7 = No. Type=4 = Yes/No
установить YesNo=
установить MsgType=4

OriginalGriff

Все, что заключено в символы"%", является переменной окружения. Таким образом, поскольку набор сообщения в 4 выше, что это какой %сообщения% будет решать задачи.

REM - это все еще комментарий!

shiv7

Большое вам спасибо за то, что развеяли мои сомнения.
Еще несколько вопросов пожалуйста:

Если REM-это просто комментарий, то как он работает, так как 6 находится внутри комментария.
как 6 и 7 предоставленные внутри REM влияют на код

если "%YesNo%"=="6" (
Эхо "привет"
)

OriginalGriff

Это не так - это комментарий, чтобы сказать вам, человеку, читающему его, что должны делать ценности!