PDA

View Full Version : [DOS] Script...


wicasa
20-07-2004, 08:29
Devo realizzare uno script in DOS...e nn ho idea da dove cominciare!
:confused: :confused: :confused:
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

Avete qualche suggerimento da darmi...anche sui singoli punti!!! grazie mille a tutti :)
:help:

wicasa
20-07-2004, 11:49
caspita...fino ad ora ho risolto così i primi punti:

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?

cn73
20-07-2004, 13:39
mmm... Dos non ha una syscall tipo la wait di Unix...
Se non ricordo male esiste un comando interno PAUSE che però stoppa il batch fino alla pressione di un tasto...

wicasa
20-07-2004, 14:39
ci sono o quasi risolto ora testo...
...la wait c'è come il text di unix...
attraverso il comando START /wait /b...
...ora vedo se funziona e poi posto!
Grazie mille!

wicasa
20-07-2004, 16:12
non riesco a farla funzionare...ossia parte il primo processo...ma nn attende che questo finisca!!!!:incazzed:
passa al sucessivo creando così errore, in quanto il secondo processo deve leggere un file di testo creato dal primo!:( :( :(
:help:
:nera:

cionci
20-07-2004, 16:37
Quindi il primo processo non è per console ? In tal caso è un casotto...
Si potesse fare un'attesa attiva sarebbe già buono...

file_test:
if not exist miofile.txt goto file_test

cn73
20-07-2004, 16:46
DOS è un sistema monoutente e la multiprogrammazione, pur presente, è ridotta all'osso. Non sono previste syscall di sincronizzazione...

wicasa
20-07-2004, 17:09
ho fatto una cosa analoga...


:_puntoprima

IF EXIST miofile.txt (
goto _puntodopo
) ELSE (
goto _puntoprima
)

:_puntodopo


ma sembra nn funzionare...però...forse forse ho trovato il bug....
Grazie....:ops: vado a vedere...a presto
sperin...

wicasa
20-07-2004, 17:11
Originariamente inviato da cn73
DOS è un sistema monoutente e la multiprogrammazione, pur presente, è ridotta all'osso. Non sono previste syscall di sincronizzazione...
me ne sono accorto mio malgrado:( :( :(

wicasa
20-07-2004, 17:18
Funziona!!!:D :D :D
...ma continua a darmiilproblema per cui ho fatto tutto questo casino!!!

Avete qualche idea in merito:confused: :confused: :confused:

cionci
20-07-2004, 17:26
Ma se esegui i vari file manualmente in sequenza...funziona ?

wicasa
20-07-2004, 17:39
si...ho provato e riprovato...e tutto funziona anche a distanza di pochi sec tra un clik e l'altro:confused:

infatti pensavo...con il cipi :D...che poteva essere un problema della
sh.exe del cygwin...(devo per forza avviare uno script da qui)...
e allora avanti a scrivere uno script in Dos...magari essendo sempre winzoz le cose sarebbero cambiate...ma figurati...un caspita... :muro:
:cry:...

tra l'altro il progr che lancia lo script vuole bene solo alla shell di unix:( :( :( ...e quindi devo per forza passare attraverso di essa!

e via allora a lanciare il cmd da sh e poi fargli caricare il .bat!!!
...funziona!!! e come se funziona...:) :D ...ma il problema di monte rimane:muro: :( :mad:

wicasa
20-07-2004, 18:13
ho individuato con certezza il problema...è la shell di cygwin che mi
crea il danno!!!
...anche se passo per il cmd, in quanto continua a comandare lei!!!:(

...ora devo vedere se riesco a chiamare direttamente il file di batch di win dal programma principale senza passare per cygwin...a costo di disinstallare quest'ultimo!!! :sperem:
Ciao!!

wicasa
21-07-2004, 08:40
Originariamente inviato da wicasa
ho individuato con certezza il problema...è la shell di cygwin che mi
crea il danno!!!
...anche se passo per il cmd, in quanto continua a comandare lei!!!:(

:incazzed: il problema era quello...ho tolto il cygwin...ma nn ci crederete maiiiii....:grrr: :ncomment: :grrr: non funziona più, anche con il semplice doppio click sull'appl... :muro: :muro:

...ora devo vedere se riesco a chiamare direttamente il file di batch di win dal programma principale senza passare per cygwin...a costo di disinstallare quest'ultimo!!! :sperem:
Ciao!!
:incazzed: :bsod:...ecco la mia risposta!!!! alla mia speranza...:cry:

cmq...oggi l'idea è pazza ma speriamo che funzioni...
nel secondo applicativo in VB7 aggiungo un controllo sui processi e per quelli che mi rompno c'è solo una cosa:Perfido:...LA MORTE!!!:boxe:

cionci
21-07-2004, 09:03
Originariamente inviato da wicasa
:incazzed: il problema era quello...ho tolto il cygwin...ma nn ci crederete maiiiii....:grrr: :ncomment: :grrr: non funziona più, anche con il semplice doppio click sull'appl... :muro: :muro:

Spiega un pochino meglio la situazione attuale...con cosa hai realizzato i due applicativi e che obiettivo devi raggiungere...

I programmi realizzati da Cygwin senza cygwin.dll non funzionano...

wicasa
21-07-2004, 09:46
La situazione attuale è la seguente:

ho un programma master che modifica dei file di testo e lancia lo script,
a questo punto lo script lancia un progr in VB6 che genera quell'errore...poi una volta terminato viene lanciato un progrmma in VB7 che legge dai file di output di VB6 e scrive su altri file...a questo punto il master legge da questi ultimi e riparte con un secondo ciclo!

tutti questi nn hanno bisogno della shell di cygwin...

l'obiettivo che devo raggiungere è far ciclare il tutto senza intoppi...premesso il fatto che i singoli programmi funzionano!:)

grazie mille ancora

cionci
21-07-2004, 09:50
Fai fare il cilo al programma master e non ad un batch...

wicasa
21-07-2004, 10:01
magari potessi...mal'unico modo per poter far interagire il master con gli altri è usare uno script .bat o .sh!!!:(

cionci
21-07-2004, 15:09
E se invece di fare uno script fai un'altro eseguibile ? In questo modo, lanciando le varie esecuzioni con la CreateProcess, puoi controllare la terminazione dei vari passi...

wicasa
21-07-2004, 15:33
è quello a cui stavo lavorando...ma ho un piccoloproblema con VB.Net
nel fargli scrivere l'errore sufiledi log piuttosto che sul video!...ma ci stò
lavorando!!!!...magari apro un'altra discussione con questo nuovo
dilemma?:(