Scrivere nella sessione DOS

di il
2 risposte

Scrivere nella sessione DOS

Ciao a tutti,
la domanda che voglio fare riguarda uno script vbs.
Devo richiamare questo script vbs da un .bat e lo richiamo in questo modo:

C:\Winnt\system32\WSCRIPT.EXE "D:\Applicaz\Prova\prova.vbs"

pause

Dovrei poi fare in modo che il vbs restituisca un valore (per esempio "Hello World!") nella finestra DOS. Cercando su internet ho trovato questo codice:

dim WshShell

Set WshShell = WScript.CreateObject("WScript.Shell")

WshShell.AppActivate "CMD"

WshShell.SendKeys "Hello World!"

Set WshShell = Nothing

Però non funziona, mi risponde che AppActivate non è un oggetto o un metodo supportato dall'oggetto. Ommettendo la parte di AppActivate restituisce lo stesso errore su SendKeys.
Sapete aiutarmi?
Grazie mille!

2 Risposte

  • Re: Scrivere nella sessione DOS

    Prova a chiamarla cmd.exe invece che CMD.
    Ovviamente tutto funziona se c'è un cmd.exe aperto.

    Chip
  • Re: Scrivere nella sessione DOS

    Salve a tutti.

    Ho l'esigenza di migliorare un file batch e ho risolto alcuni problemi scrivendo un piccolo programma in \".vbs\".
    Premetto che sono a zero in vbs, ma per le poche operazioni che deve compiere questo programmino, non mi serve conoscere tutto il visual basic, mi basterebbe qualche dritta per venire a capo di alcuni problemi.

    Vorrei scrivere questo file \".vbs\", in modo tale che apra una finestra prompt e passi dei comandi a questa. Questo riesco a farlo col comando \"WshShell.SendKeys\"...riuscendo a simulare anche al pressione di tasti come \"invio\" e combinazioni tipo \"ctrl+c\". Fin qui tutto ok.
    Però avrei anche la necessità di introdurre un blocco if in modo tale da compiere un'operazione solo se l'operazione precedente restituisce un certo esito.
    In batch mi arrangiavo con la funzione \" | find \"testo\" \"....mi spiego con un esempio:

    Volendo stabilire se la mia connessione dialup è down oppure no e volendo eventualmente eseguire la riconnessione, eseguo un ping ad un sito e ordino la riconnessione solo se trovo nell'esito del ping la frase \"100% persi\". In batch me la cavavo così:

    ping 195.210.91.83 | find \"100%% persi\"
    goto aspetta%errorlevel%

    dove \":aspetta\" è un'etichetta seguita da operazioni corrispondenti...

    Ora vorrei tradurre questo programmino in vbs. Deve eseguire le seguenti operazioni:

    1- aprire una finestra prompt e settarla come applicazione attiva
    2- simulando la pressione di tasti deve inviare al prompt il ping ad un sito qualsiasi
    (tanto per capirci WshShell.SendKeys \"ping 195.210.91.83\" )
    3- a questo punto (e questo non so come si faccia) vorrei che leggesse il responso dell'operazione \"ping\" e se travasse \"100% persi\", facesse una serie di operazioni.

    Vi chiederei aiuto per quanto riguarda il punto (3). Non riesco a capire come fargli \"leggere\" il testo che mi restituisce il prompt. E come fare a fargli \"trovare\" in quel testo una particolare frase.
    Spero che sia possibile fare tutto ciò e mi rimetto alla vostra conoscenza.

    Ringrazio in anticipo chiunque volesse aiutarmi, pregandovi di rispondermi in modo quanto più possibile semplice, visto che sono a zero in questo campo. Se qualcuno avesse anche un link inerente a questo problema, non esiti a metterlo.

    Arrisentirci
Devi accedere o registrarti per scrivere nel forum
2 risposte