Comandi DOS

di il
25 risposte

25 Risposte - Pagina 2

  • Re: Comandi DOS

    12/06/2024 - @Alex ha scritto:


    In linea di principio NESSUNO se non per il waitOnReturn che rende SINCRONA la chiamata, quindi se il comando dovesse richiedere 3minuti, l'uscita dalla chiamata avviene dopo 3 minuti, normalmente invece l'uscita è immediata e non sai se viene eseguita.

    Devi però leggere le istruzioni di quello che usi.

    Ad esempio se assegni la call a RUN ad una variabile puoi capire se è stato rilevato un errore o meno…

    errorCode = wsh.Run("myScript.cmd", windowStyle, waitOnReturn)
    If errorCode = 0 Then
        MsgBox "Execution successful. No error to report."
    Else
        MsgBox "Program exited with error code " & errorCode & "."
    End If  

    Quindi usando WScript, intanto sei SINCRONO e poi l'uscita è determinabile… 

    Per farlo con la SHELL avresti dovuto usare le API OpenProcess, metterti in loop ed attendere GetExitCodeProcess.

    Per lasciare aperta la finestra hai provato a passare il parametro 

    /S      Modifies the treatment of string after /C or /K (see below) 
    /C      Carries out the command specified by string and then terminates  
    /K      Carries out the command specified by string but remains 
    wsh.Run "cmd.exe /S /C....

    In effetti è esattamente quello che facevo prima, quindi non risolve i miei problemi:

    1. non aprire una seconda finestra se ne esiste già una
    2. usare sempre la stessa per i comandi successivi
  • Re: Comandi DOS

    Con la SHELL non è sincrona la chiamata quindi impossibile a prescindere sapere se è terminato il comando e se ha avuto esito positivo, per la parte [/K] ovviamente funziona allo stesso modo, ma quello è l'Eseguibile a processarlo, WScript è solo lo strumento per inviare la chiamata come Shell.

    Quindi probabilmente ha lo stesso difetto della SHELL ma almeno hai possibilità diagnostica e sai se il comando lanciato è rimasto appeso o meno e che esito ha dato… 

    Fossi in te, farei una prova perchè potrebbe dipendere dal fatto che il CMD venga lanciato da un'applicativo e non direttamente.

    Crea un File.BAT con all'interno la stringa del Command da eseguire, prima lo lanci a mano e vedi se funziona rispettando il [/K], poi lanci il File.Bat da SHELL o WScript e vedi se cambia qualche cosa, penso sia li il problema.., in questo caso temo possa non essere risolvibile se non scrivendo il Command in un File.Bat e poi lanci quello...

    Non ho altro da suggerire.

  • Re: Comandi DOS

    A volte non riesco a capire l'origine dei problemi … facciamo un passo indietro …

    A che ti serve un prompt del DOS nella tua applicazione? E perché deve restare aperto? Come mai devi dare più comandi?

    Molte volte si tende a risolvere un determinato problema impostando una soluzione assurda che porta ad altri problemi.

    Qual è il problema originale per cui pensi di risolvere con il prompt del DOS?

  • Re: Comandi DOS

    12/06/2024 - @Alex ha scritto:


    Per lasciare aperta la finestra hai provato a passare il parametro 

    /S      Modifies the treatment of string after /C or /K (see below) 
    /C      Carries out the command specified by string and then terminates  
    /K      Carries out the command specified by string but remains 
    wsh.Run "cmd.exe /S /C....

    Si, lo avevo già fatto ("/K)" e funziona, grazie.

    Ma sono da capo: i comandi successivi sono eseguiti in un altra finestra.

    Vorrei invece che fossero eseguiti sempre nella stessa finestra, la prima che è stata aperta. Idee? Grazie

  • Re: Comandi DOS

    Ma quali altri comandi?

    Devi eseguire un batch?

    Che senso ha questa tua richiesta?

    Vuoi inserire comandi a mano?

    Non si riesce a capire il motivo della richiesta

  • Re: Comandi DOS

    18/06/2024 - oregon ha scritto:


    Ma quali altri comandi?

    Devi eseguire un batch?

    Che senso ha questa tua richiesta?

    Vuoi inserire comandi a mano?

    Non si riesce a capire il motivo della richiesta

    Sto cercando di sviluppare una semplice applicazione che permetta di eseguire comandi DOS memorizzati in un DB Access.

    L’utente seleziona il comando da una combo e preme “esegui”. Il comando viene eseguito in una finestra DOS , cosi come quelli successivi

    Grazie per i suggerimenti 

  • Re: Comandi DOS

    Una applicazione VBA Access che esegue comandi DOS, genericamente, mi sembra veramente inutile.

    A cosa servirebbe una cosa del genere ad un utente utilizzatore?

    Comunque, se i comandi sono tanti, scrivili in un file batch ed esegui quelli, poi cancelli il file

  • Re: Comandi DOS

    18/06/2024 - oregon ha scritto:


    Una applicazione VBA Access che esegue comandi DOS, genericamente, mi sembra veramente inutile.

    A cosa servirebbe una cosa del genere ad un utente utilizzatore?

    Comunque, se i comandi sono tanti, scrivili in un file batch ed esegui quelli, poi cancelli il file

    Appunto, come già suggerito:https://www.iprogrammatori.it/forum-programmazione/access/comandi-dos-t53703-15.html#p8718817

    Rimango anch'io perplesso dell'esigenza… e del metodo, ma oltre a dire che serve questo non ha spiegato la reale funzionalità.

  • Re: Comandi DOS

    18/06/2024 - @Alex ha scritto:


    18/06/2024 - oregon ha scritto:


    Una applicazione VBA Access che esegue comandi DOS, genericamente, mi sembra veramente inutile.

    A cosa servirebbe una cosa del genere ad un utente utilizzatore?

    Comunque, se i comandi sono tanti, scrivili in un file batch ed esegui quelli, poi cancelli il file

    Appunto, come già suggerito:https://www.iprogrammatori.it/forum-programmazione/access/comandi-dos-t53703-15.html#p8718817

    Rimango anch'io perplesso dell'esigenza… e del metodo, ma oltre a dire che serve questo non ha spiegato la reale funzionalità.

    L'esigenza è quella di fornire a persone, che non hanno competenze di reti o di comandi DOS, uno strumento con interfaccia utente semplice ed intuitiva, che include tutti i comandi necessari a effettuare diagnostica di rete, senza bisogno di dover scrivere. Non vedo cosa ci sia di sbagliato (gli utenti hanno diversi gradi di disabilità cognitiva).

    Inoltre, effettuare un log a posteriori dei comandi più usati e dei risultati - e quindi dei problemi più frequenti - potrebbe essere loro di aiuto nella risoluzione dei medesimi. Si potrebbe anche creare, nel tempo, una sorta di knowledge base dei problemi di rete, con possibili opzioni di soluzione.

  • Re: Comandi DOS

    Ma se la questione è rivolta a questo tipo di utenza (senza competenza di reti, di comandi, di nozioni teoriche immagino), molto probabilmente Access e codice VBA non sono la scelta migliore per l'implementazione di questo strumento.

    Il discorso ci porterebbe molto lontano ma, secondo me, sei su una strada sbagliata.

    In ogni caso, per molti comandi, crea un file batch ed eseguilo. Crea dei “template” per controlli tipo.

    Non so se ho capito, ma questi operatori rispondono ad un cliente che li ha contattati, magari facendo un ping o un tracert ? La vedo dura …

  • Re: Comandi DOS

    Usare vba per inserire comandi in una combo che lancia un comando dos… mah!

    Come usare un accendino per accendere un fiammifero per accendere un pezzo di carta da usare per accendere il caminetto….

    Prendiamola a ridere… 

    Pippo: vorrei delle sigarette sfuse…

    tabaccaio: non si vendono le sigarette sfuse, sono a pacchetti da 20…

    Pippo: ma se io le voglio sfuse come faccio?

    tabaccaio: non saprei… le sigarette vanno a pacchi da 20.

    Pippo: ma non potrebbe fare un'eccezione?

    tabaccaio: no dovrei aprire un pacchetto e buttare le altre.

    Pippo: e dai! per questa volta!

    tabaccaio: e va bene!!! (aprendo il pacchetto) quante ne vuole?

    Pippo: 20!

    Buon lavoro a tutti!

Devi accedere o registrarti per scrivere nel forum
25 risposte