Lanciagranate con variabili


0

Questo launcher batch è stato creato in modo che i file batch non avviino una finestra del prompt dei comandi ... Ora che sto aggiungendo più variabili, non funziona ...

Sto lanciando VBScript in questo modo;

wscript D: \ batchlaunchersyntax.vbs D: \ the batch \ batch.bat 11 D: \ programmi \ ciao mondo

Le ultime 2 variabili cambiano. Vorrei lanciare il file batch passando un numero seguito da una variabile di directory.

Potete per favore aiutarmi a modificare questo VBScript per farlo?

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

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

Se oArgs.Count <> 3 Quindi

' 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 & "" & sArg2 & "" , 0, True)

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

'--------------------8<----------------------

Risposte:


1

Leggi e segui la sintassi: caratteri di escape, delimitatori e virgolette :

Utilizzo di "virgolette doppie"

Se un singolo parametro contiene spazi, puoi comunque passarlo come un elemento racchiudendolo tra "virgolette" - questo funziona bene per i nomi di file lunghi.

Applicato al tuo caso, utilizzare:

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

Altrimenti, la riga di comando viene tokenizzata come segue:

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

0

Il tuo script accetta solo due argomenti, quindi dovresti cambiare questa riga per riflettere il numero di argomenti che vuoi passare allo script:

If oArgs.Count <> 2 Then

Cambia il 2 in qualunque sia il tuo nuovo limite.

Il primo argomento, oArgs(0)è il nome dello script batch che si desidera eseguire.

Il secondo argomento, oArgs(1)è il nome del parametro da passare al primo argomento.

Per passare più argomenti, è necessario assegnare oArgs(2)e così via a nuove variabili, quindi modificare la riga che legge:

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

... in modo che più argomenti possano essere passati allo script. Aggiungeresti quelli dopo la sArgvariabile, quindi: sArg & " " & sArg2 & " " & sArg3supponendo di aver assegnato gli argomenti passati a sArg2esArg3

Naturalmente, il file batch deve sapere cosa fare con gli argomenti passati. :-)

Spero che sia di aiuto!


Ho implementato le modifiche ma ottengo ancora: Errore: è necessario fornire un percorso file come parametro di input! quando si esegue wscript D: \ batchlaunchersyntax.vbs D: \ the batch \ batch.bat 11 D: \ programmi \ ciao mondo
BlueLostKing,

L'ordine dei parametri è importante ed è un indice basato su 0. Quindi, oArgs (0) è il nome del file batch, 1 è il percorso previsto dal file batch, 2 sarebbe il tuo valore numerico. Modificare la logica batch di conseguenza.
JSanchez,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.