Latch Launcher With Variables

0

Este batch launcher foi criado para que os arquivos batch não iniciem uma janela de prompt de comando ... Agora que estou adicionando mais variáveis a ele, não está funcionando ...

Estou lançando o VBScript assim;

wscript D: \ batchlaunchersyntax.vbs D: \ o lote \ batch.bat 11 D: \ arquivos de programas \ hello world

As últimas 2 variáveis mudam. Gostaria de iniciar o arquivo em lote passando um número seguido por uma variável de diretório.

Você pode me ajudar a editar este VBScript para fazer isso?

'--------------------8<----------------------
sTitle = "Batch launcher"

Set oArgs = WScript.Arguments
Set oFSO = CreateObject("Scripting.FileSystemObject")
Set oShell = CreateObject("WScript.Shell")

Se oArgs.Count < > 3 Então

' Will die after 10 seconds if no one is pressing the OK button
oShell.Popup "Error: You need to supply a file path " _
& "as input parameter!", 10, sTitle, vbCritical + vbSystemModal

Wscript.Quit 1
End If

sFilePath = oArgs(0)
sArg = oArgs(1)

sArg2 = oArgs (2)

If Not oFSO.FileExists(sFilePath) Then
' Will die after 10 seconds if no one is pressing the OK button
oShell.Popup "Error: Batch file not found", _
10, sTitle, vbCritical + vbSystemModal

Wscript.Quit 1
End If

' add quotes around the path in case of spaces

iRC = oShell.Run ("" "" & sFilePath & "" "" & sArg & "" & s Arg 2 & "" , 0, True)

' Return with the same errorlevel as the batch file had
Wscript.Quit iRC

'--------------------8<----------------------
    
por BlueLostKing 25.02.2014 / 15:55

2 respostas

1

Leia e siga Sintaxe: Escape Characters, Delimiters and Quotes :

Using "Double Quotes"

If a single parameter contains spaces, you can still pass it as one item by surrounding in "quotes" - this works well for long filenames.

Aplicado ao seu caso, use:

wscript D:\batchlaunchersyntax.vbs "D:\the batch\batch.bat" 11 "D:\program files\hello world"

Caso contrário, a linha de comando é tokenizada da seguinte forma:

rem     ↓ script name
wscript D:\batchlaunchersyntax.vbs D:\the batch\batch.bat 11 D:\program files\hello world
rem oArgs(0)    D:\the
rem oArgs(1)    batch\batch.bat
rem oArgs(2)    11
rem oArgs(3)    D:\program
rem oArgs(4)    files\hello
rem oArgs(5)    world
    
por 23.09.2017 / 19:47
0

Seu script só aceita dois argumentos, então você teria que alterar esta linha para refletir o número de argumentos que você deseja passar para o script:

If oArgs.Count <> 2 Then

Mude o 2 para qualquer que seja seu novo limite.

O primeiro argumento, oArgs(0) , é o nome do script em lote que você deseja executar.

O segundo argumento, oArgs(1) , é o nome do parâmetro a ser passado para o primeiro argumento.

Para passar mais argumentos, você deve atribuir oArgs(2) e assim por diante a novas variáveis e, em seguida, alterar a linha que diz:

oShell.Run("""" & sFilePath & """" & sArg, 0, True)

... para que mais argumentos possam ser passados para o script. Você adicionaria esses depois da variável sArg , assim: sArg & " " & sArg2 & " " & sArg3 supondo que você atribuiu os argumentos passados a sArg2 e sArg3

Naturalmente, seu arquivo em lote deve saber o que fazer com os argumentos transmitidos. : -)

Espero que isso ajude!

    
por 25.02.2014 / 18:57