Newsgroup: it.comp.os.win.xp
Titolo: utility per eseguire i file batch con parametri

Avrei bisogno di una utility per lanciare dal desktop dei file batch 
specificando di volta in volta i parametri senza aprire una finestra "dos".
Esiste qualcosa del genere?
Grazie.

Sottop wrote:

Non esisteva 10 minuti fa :)
Pero' siccome mi e' parsa interessante, me la sono creata anche per me:
Apri il blocco note e incollaci dentro questo:
Dim ArgObj,Param
Set ArgObj = WScript.Arguments
Set WshShell = WScript.CreateObject("WScript.Shell")
If WScript.Arguments.Count =0 then
 Msgbox "Nessun programma da lanciare"
 WScript.Quit
End iF
Param = InputBox("Parametri", ArgObj(0))
If Param = "" then  WScript.Quit
Param = "cmd /k " & WScript.Arguments(0) & " " & Param
WshShell.Run Param
Ora, salvalo come (TUTTI I FILE) parametri.vbs, io
consiglio di salvarlo nella cartella windows.
Ora crea un collegamento a questo file (tasto
destro, crea collegamento), poi clicca su start-->esegui
e scrivi
%userprofile%\sendto
batti invio, si aprira' la cartella che gestisce
gli "invia a", mettici dentro il collegamento
creato poco sopra.
Fatto ! ora quando devi lanciare un batch con
dei parametri, anziche' farci 2 click sopra clicca
con il DESTRO del mouse sul batch da lanciare, seleziona
"invia a", dopodiche' nella tendina che compare ci sara'
anche il "collegamento a Parametri" creato prima, cliccalo
e ti chiedera' con che parametri vuoi lanciarlo.
Come potrai notare, una volta che il batch ha fatto
il suo lavoro la finestra DOS rimane APERTA (l'ho
fatto per vedere quello che succede a batch concluso), se
non ti piace e vuoi che invece la finestra DOS si chiuda
automaticamente cambia la PENULTIMA riga del programmino:
da
Param = "cmd /k " & WScript.Arguments(0) & " " & Param
deve diventare
Param = WScript.Arguments(0) & " " & Param
Saluti.

 Pero' siccome mi e' parsa interessante, me la sono creata anche per me:
Bellino! :-)
Grassie
Claudio


[...]
Ottima e veramente utile!!!
Ti segnalo che non funziona se il nome della directory che contiene il 
file batch o il nome del file contiene spazi o caratteri speciali.
Le mie conoscenze non sono tali da poter suggerire la soluzione.
Purtroppo io ho diversi casi di questo tipo :(
-- 
Ciao, Adriano
----------------------------------
Togli "rosso" per contatto privato

 Purtroppo io ho diversi casi di questo tipo :(
Cambia la riga:
Param = "cmd /k " & WScript.Arguments(0) & " " & Param
con:
Param = "cmd /k " &chr(34)& WScript.Arguments(0) &chr(34)&  " " & Param
che aggiunge i doppi apici al nome del programma da lanciare.
P.S. Questa utility è veramente bella, può essere usata non solo
per i files .BAT ma per qualsiasi programma.
Ciao
Claudio

 P.S. Questa utility è veramente bella, ......
Condivido appieno, ed aggiungo molto utile


 
A me la chiusura funziona sostituendo /K con /C e non togliendo "cmd /k"
Spero di aver completato il debug e mi automino 1° debugger di questo 
script :)


 script :)
:)
Effettivamente il betatesting che ho fatto e' stato inferiore al tempo
di realizzazione :P
Grazie a te e a Claudio, per l'integrazione,  anche da parte di quelli
che leggeranno in futuro grazie a guggl ;)

 Pero' siccome mi e' parsa interessante, me la sono creata anche per me:
Grazie mille della tua collaborazione. Posso chiedere, se non è troppo, 
un'integrazione?
Ho un file batch in cui uno dei due parametri da usare è da scegliere 
tra una lista fissa di voci. In pratica, vorrei che questo parametro 
venisse scelta da una casella di riepilogo. Come faccio a modificare il 
file vbs?
Grazie milletanta!

Sottop ha scritto:

Ti rispondo io, ma forse Franz potrebbe aiutarti di più.
A quanto ne so vbs non offre sistemi di input più sofisticati di
InputBox, l'unica cose che puoi fare in più è aggiungere un valore
di default, ad esempio:
defval = "ABC" ' <-- il tuo parametro predefinito
Param = InputBox("Parametri", ArgObj(0),defval)
Però la strada è aperta, visto che la tecnica è quella di fare
un link ad "invia a", il programma di data entry si può fare
con qualsiasi linguaggio Ad esempio Delphi o VB, ma in questo
caso ci vogliono un po' più di 10 minuti.
Ciao
Claudio

 
Azz, io pensavo il contrario, anche perché la ricerca di "vbscript 
combobox" restituisce una marea di risultati pur non sapendo io come 
fare a costruire una form.
Magari mi sbagliavo...

 fare a costruire una form.
Non sono un esperto, ma forse si riferiscono alla programmazione
web/asp e non allo scripting di sistema.
Ciao


Si, infatti non c'e' GUI nel VSH, SOLO inputbox e messagebox.
Tecniche piu' sofisticate, come chiamare le API per creare un form
e popolarlo di bottoni per fare una scelta piu' "ampia" richiedono
"diritti" che il VHS non ha, inoltre a questo punto e' piu' facile
fare un piccolo programma (ad esempio) con visual basic.

 fare un piccolo programma (ad esempio) con visual basic.
Oppure  con autoit che e' free e fa lo stesso del VB6
http://www.autoitscript.com/autoit3/
; cit.
#include <GUIConstants.au3>
$Form1 = GUICreate("Vodafone", 460, 333, 207, 130)
$Input1 = GUICtrlCreateInput("3478****", 0, 16, 209, 21)
$User = GUICtrlCreateInput("USER", 0, 36, 209, 21)
$Pass = GUICtrlCreateInput("PASS", 0, 56, 209, 21)
GUICtrlCreateLabel ("ASSICURARSI DI NON ESSERE GIA LOGGATI",220,5,230,51)
GUICtrlCreateLabel ("Se si o se da ERRORE andare su 
www.190.it
 e"&  _
"cliccare su LOGOUT e riprovare",  220, 40,260, 51)
$Edit1 = GUICtrlCreateEdit("", 16, 96, 321, 193)
GUICtrlSetData($Edit1, "349********")
$Button1 = GUICtrlCreateButton("Invia", 368, 248, 75, 41, 0)
$Button2 = GUICtrlCreateButton("AButton2", 24, 296, 75, 25, 0)
$Button3 = GUICtrlCreateButton("AButton3", 128, 296, 75, 25, 0)
GUISetState(@SW_SHOW)
While 1
	$msg = GuiGetMsg()
	Select
	Case $msg = $GUI_EVENT_CLOSE
 
		ExitLoop
	;Case Else
Case $msg = $Button1
	$read =GUICtrlRead ($Input1)
	;MsgBox(262144, "", $read)
	$read2 =GUICtrlRead ($Edit1)
	;MsgBox(262144, "", $read2)
	$read3 =GUICtrlRead ($User)
	$read4 =GUICtrlRead ($Pass)
GUISetState(@SW_HIDE)
Exit
		;;;;;;;
	EndSelect
WEnd
 Exit
; ecc
-- 
Fosco