PDA

Visualizza versione completa : [DOS] Script...


wicasa
20-07-2004, 12.53.39
il mio SO è WinXP...
Devo realizzare uno script in DOS...e nn ho idea da dove cominciare!

Le azioni che devo compiere sonopiuttosto semplici:

> devo copiare due file su delle cartelle;
> devo lanciarene uno dei due;
> controllare che abbia scritto su un file di testo;
> lanciare il secondo;
> attendere che abbia finito discrivere su un altro file;
> cancellarli dalla cartella creata.

Le cartelle vengono create sequenzialmente con un indice incrementale
....tipo nomecartella000001

...fino ad ora ho risolto così i primi punti:

code:
rem copio il file nella dir attuale
copy "c:\path\nomefile.exe" .
rem eseguo il file
call nomefile.exe
rem controllo se è stato creato il file
if exist miofile.txt (comando1)
else (comando2)




ora però nn riesco a fargli capire nel (comando2) che deve attendere
2 sec prima di procedere!!!

sapete darmiqualche dritta?

Krakatau
20-07-2004, 13.43.55
ma i due secondi, perchè?

se devi solo aspettare la fine della prima esecuzione lancia

if exist miofile.txt (
Start /wait /b comando1
) else (
Start /wait /b comando2
)

p.s.: attenzione all'indentazione dell'else

wicasa
20-07-2004, 15.35.27
grazie mille...
...beh i due secondi mi servono peraver la certezza che le risorse siano state completamente liberate...
...ma usando lo start questo nn miserve +...:) grazie mille ancora
ora vedo se funziona!!!

wicasa
20-07-2004, 17.08.53
ma il wait dello start aspetta mia nonna!!!
:D :D

caspita...come faccio a fermarlo in attesa che mi scriva sul file il processo precedente?

wicasa
20-07-2004, 18.20.28
Ho combinato!...con un bel GOTO si risolve tutto...
...mail problemaper cui avevo fatto tutto questo casino mi rimane!

vedi allegato!
Avete idee in merito????

P8257 WebMaster
21-07-2004, 00.46.04
Il programma è bacato o non gira nell'ambiente adatto .. o con librerie di versioni adatte...

Bye :cool:

Dav82
21-07-2004, 00.52.51
Web ma non cici niente a sentir nominare i GOTO? :D

P8257 WebMaster
21-07-2004, 01.07.26
E' verooooooooooooo..!!! Taglio delle mani :D..... (Y)...

Scherzo, putroppo nel batch, come sai, non si poteva fare altrimenti... :(....

Bye :cool:

Dav82
21-07-2004, 01.12.34
Originariamente inviato da P8257 WebMaster
Scherzo, putroppo nel batch, come sai, non si poteva fare altrimenti... :(....

Scio scio... :(

dave4mame
21-07-2004, 09.39.05
Originariamente inviato da wicasa
ma il wait dello start aspetta mia nonna!!!
:D :D

caspita...come faccio a fermarlo in attesa che mi scriva sul file il processo precedente?


oddio, come soluzione è grezza.
però puoi cercarti uno di quei vecchi programmi di enhancement del dos.
anzichè usare il "pause" della shell (che aspetta un keypress) potresti avere un wait.com o similare a cui passare i secondi di delay...

wicasa
21-07-2004, 09.47.41
Originariamente inviato da P8257 WebMaster
Il programma è bacato o non gira nell'ambiente adatto .. o con librerie di versioni adatte...

Bye :cool:

beh dalla tua risposta deduco che il problema ti è noto!...almeno tu...aiutoooo!!!!
sicuramente è un problema di librerie...visto che girano per forza di cose un progr in VB6 e uno in VB7...ma se io faccio partire il primo...lo faccio terminare, con le poche conoscenze di DOS attraverso il GOTO, poi faccio partire il secondo, le risorse del primo dovrebbero essere state scaricate (visto l'utilizzo dei Close ed End a fine listato)????

Grassie mille

PS: Resta il fatto che ho tolto la shell di cygwin e il problema si è presentato sotto nuova veste...ossia ora neppure con il doppio click da visual nn combino! o meglio il programma conclude e anche bene ma prima di morire mi appare quel msg di errore...ora se nn risolvo velocemente medito di lasciare l'errore dov'è e semplicemente bypassarlo!!!

wicasa
21-07-2004, 09.49.38
Originariamente inviato da dave4mame



oddio, come soluzione è grezza.
però puoi cercarti uno di quei vecchi programmi di enhancement del dos.
anzichè usare il "pause" della shell (che aspetta un keypress) potresti avere un wait.com o similare a cui passare i secondi di delay...

cioè cioè...dimmi hai qualche link sotto mano da girarmi?...Grassie

dave4mame
21-07-2004, 10.07.11
eh.. è roba di 10 anni fa almeno..
se non hai grossi vincoli di copyright potresti provare 4nt (www.jpsoft.com) è un sostituto del command.com (o cmd.exe) con molti più comandi.
e se ben ricordo puoi passare al comando interno pause i secondo di attesa...

P8257 WebMaster
21-07-2004, 10.14.08
Nella sezione programmazione avevo postato un programmino che semplicemente "aspettava" per il numero di secondi che gli davi .. se interessa è qui:

http://www.msni.it/forum/showthread.php?s=&threadid=66698&highlight=delayt

Bye :cool:

P8257 WebMaster
21-07-2004, 10.20.49
wicasa ha scritto:


beh dalla tua risposta deduco che il problema ti è noto!...almeno tu...aiutoooo!!!!
sicuramente è un problema di librerie...visto che girano per forza di cose un progr in VB6 e uno in VB7...ma se io faccio partire il primo...lo faccio terminare, con le poche conoscenze di DOS attraverso il GOTO, poi faccio partire il secondo, le risorse del primo dovrebbero essere state scaricate (visto l'utilizzo dei Close ed End a fine listato)????

Grassie mille

PS: Resta il fatto che ho tolto la shell di cygwin e il problema si è presentato sotto nuova veste...ossia ora neppure con il doppio click da visual nn combino! o meglio il programma conclude e anche bene ma prima di morire mi appare quel msg di errore...ora se nn risolvo velocemente medito di lasciare l'errore dov'è e semplicemente bypassarlo!!!

Non se le chiamate batch vengono fatte con l'istruzione "call", il batch in questo caso viene scaricato dalla memoria ma i processi che da esso vengono lanciati restano attivi ...

La convivenza tra vb6 e 7 a livello di sistema non dovrebbe darti problemi, ma non garantisco che l'uso contemporaneo dei componenti di runtime non possa generare queste cose .. il consiglio che ti dò è di fare in modo che le chiamate del processo avvengano quanto più separatamente tra i due processi .. abolirei per cui l'istruzione "call" dal batch.

Bye :cool:

wicasa
21-07-2004, 10.59.22
Grazie mille ragazzi!!!
in ordine...

dave4mame
...grazie per il linkone...ora vedo se riesco a cambiare le chiamate, ese soprattutto il main lo prende!!!

P8257 WebMaster
...beh avevorealizzato anch'io un progr esterno per il delay in VB7...ma mi sembra strano che nn ci sia già in DOS di suo...
...anche se il C è sicuramente più leggero...ma avevo una limitazone dovuta all'ignoranza :) ;)

...dunque posso sostituire CALL con lo START?!...sperim!...ora provo e vi faccio sapere.
Grazie ancora

wicasa
22-07-2004, 09.18.12
Ooops mi hanno spostato!!! avevo postato in SO xché c'erano parecchi post sugli script ... cmq mi scuso con tutti!

Ho provato,ma ora il problema si è allargato, dopo aver tolto dimezzo la shell di cygwin ora il problema è più esteso,
ossia ora l'errore di cui sopra salta fuori
anche quando faccio girare il programma da solo con il semplice doppio click!!!

...l'idea estrema è ora quella di creare un applicativo in multithreading che mi controlli i flussi dei due processi che vado a
lanciare e scriva su file di log gli errori,
così almeno lontano dagli occhi lontano dal cuore! :D :D
Il tutto lo farei in VB7...
Avete dubbi in merito???
Ciao e grazie

P8257 WebMaster
22-07-2004, 09.32.18
Si... uno .. :

se sono gli stessi due processi ad avere problemi a girare, non credo che creando un loader esterno, tu riesolva il problema ..

Bisogna prima risolvere il problema a monte, e cioè capire "cosa" succede a questo processo e perché viene dato l'errore che lo termina .. personalmente credo questioni di librerie.... ma servono più dettagli.

Bye :cool:

wicasa
22-07-2004, 09.39.52
Come posso avere più dettagli in merito?...
...la mia idea è dovuta essenzialmente al fatto che questa cosa mi ha portato via un casino di tempo ed il lavoro di tesi mi si stà accumulando!

P8257 WebMaster
22-07-2004, 10.04.37
Com'é composto il software? . .ha delle librerie dll .. qual'é il suo compito specifico.. ? .. è una versione vecchia o è erecente?.. quali sono i requisiti di sistema?

Bye :cool: