PDA

Visualizza versione completa : File bat che apre programmi con delay


Enrica
22-04-2004, 14.22.22
Salute a tutti!
Ho bisogno di un file bat che mi apra dopo un 3 minuti un preogramma, e dopo 10 secondi un altro.
Grazie a chi mi potrá aiutare.
Ciao!

P8257 WebMaster
22-04-2004, 14.43.58
Devi appoggiarti ad un applicativo esterno, se vuoi te lo faccio e te lo posto qui.

Bye :cool:

P8257 WebMaster
22-04-2004, 14.59.20
Anzi guarda,
è talmente semplice farlo che l'ho buttato giù di getto ..

il programma allegato "delayt" aspetta per il numero di secondi che specifichi, interrompendo momentaneamente la procedura batch.

Per realizzare ciò che chiedi quindi devi fare un semplice batch in cui scrivi:


delayt 180
comando programma 1
delayt 10
comando programma 2


Il file delayt.exe deve essere nella stessa cartella del batch.

Bye :cool:

P.S.: correzione, prima avevo scritto erroneamente 3600 al posto di 180

P8257 WebMaster
22-04-2004, 15.07.29
Ho sbagliato :D ..

il primo comando del batch deve essere:

DELAYT 180

:D.. in pratica il numero di secondi, 3600 secondi equivale ad 1 ora .. :D sorry.

Bye :cool:

LoryOne
22-04-2004, 16.06.12
Non ti preoccupare...Tutti abbiamo un delay nel cervello :D :D ;)

P8257 WebMaster
22-04-2004, 16.08.21
LoryOne ha scritto:
Non ti preoccupare...Tutti abbiamo un delay nel cervello :D :D ;)

:D... (Y)

Bye :cool:

Enrica
23-04-2004, 01.58.58
Carissimo P8257 WebMaster (che nome insolito)
Innanzitutto ti tingrazio per l'aiuto.
Ho seguito le tue istruzioni e funziona parzialmente, cioé il tuo programma fa partire col ritardo impostato solo il primo programma della lista, fino a che non lo chiudo, solo allora, parte il secondo, e cosí via.
Ho scritto cosí (ho provato anche senza virgolette, ma niente da fare:

delayt 3
"C:\Arquivos de programas\ARM Software\MacroMaker\MacroMaker.exe"
delayt 3
"C:\Arquivos de programas\Active Ports\aports.exe"

Sono sicura che avrai una soluzione anche per questo, o forse dipende dal mio sistema? (XP PRO Brasile)
Da sola avevo osato scrivere:
"C:\Arquivos de programas\freq\Freq.exe"
"C:\Arquivos de programas\ARM Software\MacroMaker\MacroMaker.exe"
"C:\Arquivos de programas\Active Ports\aports.exe"
Ma anche qui si apriva solo sempre il primo, adesso sono curiosa; perché succede, e come si fa a farli partire tutti e 3 da un solo file .bat?
Spero di non abusare della tua pazienza e cortesia, ma sono un po' tonta!
Grazie mille, a presto!

LoryOne
23-04-2004, 08.10.46
Guarda Enrica, il programma del Webmaster non ha nulla di sbagliato tranne il fatto che da DOS puro non funziona.
A me da lo stesso problema (ho Window98 non XP) solo se lancio la procedura .bat dal prompt del DOS a tutto schermo.

Se lanci la procedurain una finestra di Windows succede la stessa cosa ?

P8257 WebMaster
23-04-2004, 08.57.04
Dal tuo post non era chiaramente evidente che entrambi i programmi avessero un'interfaccia utente e quindi la possibilità di essere chiusi a proprio piacimento... francamente (sbagliando) pensavo si trattasse di due procedure automatiche che dovessero partire in sequenza separate da un delay temporale ed ho quindi realizzato quella soluzione ...

Il discorso si complica in quanto il primo programma (finché non viene chiuso) interrompe l'esecuzione della procedura batch e quindi inibisce anche la partenza del programma di delay.

La soluzione comunque c'é, bisogna fare ricorso all'istruzione dos: "call" che in pratica esegue una chiamata "asincrona" di un'altra procedura batch senza interrompere la procedura chiamante.

Occorre quindi comportarsi come segue:
1 - Modificare il file .bat esistente come segue:

DELAYT 180
CALL step2.bat
comando apertura programma 1


2 - Creare un secondo file batch di nome: step2.bat (nome di esempio)

DELAYT 3
comando apertura programma 2


In questo modo il batch 1 esegue delayt per 180 secondi (3 minuti) e successivamente esegue una call ad un secondo file batch mentre il primo procede a lanciare il primo programma, il secondo rilancia delayt per 3 secondi e poi lancia il secondo programma.

NOTA: dato che la chiamata del secondo file batch e l'apertura del primo programma coincidono, in linea temporale; è possibile che una parte del primo econdo (impostato per l'attesa nel secondo delayt) venga persa in fase di apertura del programma stesso .. per avere tempi di esecuzione di tutta la procedura più "simil" a quanto richiesto è meglio impostare il secondo delayt a 4

Bye :cool:

P8257 WebMaster
23-04-2004, 09.04.09
LoryOne ha scritto:
Guarda Enrica, il programma del Webmaster non ha nulla di sbagliato tranne il fatto che da DOS puro non funziona.
A me da lo stesso problema (ho Window98 non XP) solo se lancio la procedura .bat dal prompt del DOS a tutto schermo.

Se lanci la procedurain una finestra di Windows succede la stessa cosa ?

Ciao Lory, il programma non funziona in DOS puro perché probabilmente hai bisogno del package: CWSDPMI.ZIP, il programma è stato scritto in C e compilato con GCC (djgpp), la piattaforma dpmi è automaticamente inizializzata sotto windows, ma sotto dos puro ci vuole questo driver.

Bye :cool:

Xtefano
23-04-2004, 09.06.44
Usa

start "NomeProgramma.exe"


;-)


Byez

Stefano

P8257 WebMaster
23-04-2004, 09.09.17
Aggingo che qual'ora si avesse l'esigenza di fare partire un terzo programma, occorre intervenire a "cascata" sul secondo file batch, inserendo una CALL (come mosrato) che punta ad un 3 file batch che si occuperà di eseguire la terza procedura e così via...

Bye :cool:

P8257 WebMaster
23-04-2004, 09.13.17
Xtefano ha scritto:
Usa

start "NomeProgramma.exe"


;-)


Byez

Stefano

Hai ragione, si può fare anche così.. è più comodo

File batch:

delayt 180
START programma1
delayt 3
START programma 2



e così via ...

Anche qui non l'avevo scritto perché non ero a conoscenza della piattaforma, questa procedura non funziona in DOS puro.

Bye :cool:

LoryOne
23-04-2004, 09.21.01
Originariamente inviato da P8257 WebMaster


Ciao Lory, il programma non funziona in DOS puro perché probabilmente hai bisogno del package: CWSDPMI.ZIP, il programma è stato scritto in C e compilato con GCC (djgpp), la piattaforma dpmi è automaticamente inizializzata sotto windows, ma sotto dos puro ci vuole questo driver.

Bye :cool:

Ti ringrazio, il messaggio di errore si riferiva infatti alla mancanza di tale package. :)

Enrica
23-04-2004, 15.28.14
Eccomi, grazie a tutti, siete stati davvero gentili, ma purtroppo non rieco ancora a farlo funzionare, ho scaricato i programmi, funziona il ritardo ma il secondo programma si avvia solo se chiudo il primo, e per precauzione ne ho provati una decina dei piú diversi.
Sará intolleranza del mio OS o qualche mio programma in conflitto??
Rinuncio, vi ho fatto perdere tempo e ne ho perso; peró grazie davvero, alla prossima!

P8257 WebMaster
23-04-2004, 17.07.51
Dai, non rinunciare così .. ormai ci siamo incaponiti :D...

Io ho provato un semplice batch con il notepad e il task manager scrivendo:


delayt 3
start notepad
delayt 5
start taskmgr


Qui funziona regolarmente .. prova anche tu con questa soluzione.. se hai Xp non dovrebbe dare problemi.

Bye :cool:

Enrica
23-04-2004, 23.39.09
Grazie per l'incoraggiamento!
Con notepad funziona anche qui, forse funzionano perché i prg sono in system32, ma posso spostare i progr in sys32?
Provo e ti faccio sapere, ancora grazie!

riccardonard
13-12-2008, 12.21.09
I file batch di basso livello (DOS) non lavorano in multitasking né in finestre separate, né in singola finestra, comunque tu li adoperi.
Questo significa che il comando batch viene eseguito riga per riga e, finché non è stata completata una riga di comando, non viene eseguita la successiva; non so se sono stato chiaro, intendo dire che fino a quando non è completato un comando (nel tuo caso è l'esecuzione completa fino alla chiusura di un programma esterno al batch) non viene avviata la successiva riga del batch. Quindi nion esiste la possibilità di fare quanto chiedi col sistema del file batch, e ciò non dipende assolutamente dal tuo sistema operativo, ma dalle leggi ferree del DOS.
Puoi utilizzare dei programmi esterni del tipo di cui ti allego il link. Io uso con soddisfazione AutoIt3 col quale ho fatto diverse automazioni del tipo che intendi anche tu, ad esempio la commutazione automatica di impostazioni di reti diverse (casa/ufficio), una sveglia pro-memoria ed diverse altre simpatiche e utili automazioni.
Richiede un minimo di studio, ma c'è un Help fatto molto bene che aiuta parecchio.
Se hai voglia di smanettarci un po' ti darà grandi soddisfazioni; non occorre essere provetti programmatori, basta un minimo di sbuzzo e buona volontà, ma visto il tenore della discussione che hai aperto, credo che tu abbia queste doti.
Auguri e ciao.
Riccardo


http://www.autoitscript.com/autoit3/

Sergio Neddi
14-12-2008, 22.24.38
Si, vabbè... ma rispondi ad un thread del 2004?

riccardonard
15-12-2008, 12.30.58
Mi scuso col moderatore che mi ha ripreso per l'intempestività del mio intervento e mi spiego:
Stavo facendo alcune ricerche su tutt'altro argomento; sono passato per caso da questa discussione ed ho notato (senza assolutamente fare caso alla data) che conoscevo l'argomento ed ero in grado di articolare una risposta sensata: mi sono lasciato trasportare dal desiderio di rendermi utile a qualcuno.
Scusate tanto
Riccardo
[email rimossa da Thor]

[edit by Thor: ho tolto la mail che avevi messo, per ragioni di sicurezza e (tua) privacy]

Enrica
16-12-2008, 23.59.46
Grazie riccardonard.
Hai ragione, meglio tardi che mai.
Comunque nel frattempo ho "scoperto" Autohotkey ("parente" di Autoit)
E sono riuscita ad automatizzare quello che mi serviva.
:) :) :)

insane4011
17-09-2014, 17.32.14
qualcuno mi puo gentilmente dare il programma del delay?^^ Grazie mille

xilo76
17-09-2014, 23.53.59
E' scritto nel nono messaggio...

tof63
18-09-2014, 13.43.20
Senza ricorrere a nessun programma esterno, secondo me il modo più semplice per ottenere un ritardo di esecuzione di 3 secondi in un file bat con Windows XP, 7 (e 8 probabilmente) è quello di inserire una riga di questo tipo:
ping 1.1.1.1 -n 1 -w 3000 > nul
che: pinga in indirizzo inesistente (1.1.1.1) - una sola volta (-n 1) - aspetta la risposta per 3000 millisecondi (-w 3000) - senza mostrare il risultato (> nul).
Ovviamente mettendo altri valori al posto 3000 si ottiengono ritardi a piacimento.