Передать строку с кавычками из командного файла в VBScript? - PullRequest
0 голосов
/ 18 января 2019

Я пытаюсь передать строковый параметр из командного файла в сценарий VBS, который содержит строки, и у меня возникли некоторые проблемы. Я попробовал несколько вариантов, но не могу понять это правильно.

_execute.vbs * * 1004

Set fso = CreateObject ("Scripting.FileSystemObject")
Set stdout = fso.GetStandardStream(1)
Set stderr = fso.GetStandardStream(2)

stdout.Write WScript.Arguments.Item(0) & "... "
Dim objShell, oExec
Set objShell = WScript.CreateObject ("WScript.Shell")
intReturn = objShell.Run(WScript.Arguments.Item(1), 0, True)
if intReturn = 0 Then
    stdout.WriteLine "Done"
Else
    stderr.WriteLine "Error (Return Code: " & intReturn & ") trying to execute [" & WScript.Arguments.Item(1) & "]"
End If

  • Первая попытка:

    install.bat:

    @echo off
    cscript /nologo _execute.vbs "Installing IIS" "C:\Windows\SysWOW64\inetsrv\appcmd set site ""Default Web Site"" -name:Stream"
    

    Выход:

    Установка IIS ... Ошибка (код возврата: 87) при попытке выполнить [C: \ Windows \ SysWOW64 \ inetsrv \ appcmd set site Стандартный веб-сайт-имя: поток]

  • Вторая попытка:

    install.bat

    @echo off
    cscript /nologo _execute.vbs 'Installing IIS' 'C:\Windows\SysWOW64\inetsrv\appcmd set site "Default Web Site" -name:Stream'
    

    Выход:

    'Установка ... C: \ DEV_execute.vbs (8, 1) (null): системе не удается найти указанный файл.

  • Третья попытка:

    install.bat

    @echo off
    cscript /nologo _execute.vbs "Installing IIS" "C:\Windows\SysWOW64\inetsrv\appcmd set site ^"Default Web Site^" -name:Stream"
    

    Выход:

    Установка IIS ... Ошибка (код возврата: 1168) при попытке выполнить [C: \ Windows \ SysWOW64 \ inetsrv \ appcmd set site ^ По умолчанию]

Как я могу передать два параметра, которые являются строками, которые могут включать кавычки?

1 Ответ

0 голосов
/ 18 января 2019

Я просто использовал одинарную кавычку в командном файле

cscript /nologo _execute.vbs "Installing IIS" "C:\Windows\SysWOW64\inetsrv\appcmd set site 'Default Web Site' -name:Stream"

и заменяя их двойными кавычками в файле VBS.

Replace(WScript.Arguments.Item(1),"'",chr(34))

Это не идеально, но работает для моих целей.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...