View Full Version : file batch for dummies
ho un problema...come sempre :D :) :( :eek: :cry:
devo mandare in esecuzione 5 o 6 programmi in fortran uno dietro l'altro (ognuno ci mette circa 2 ore per calcolare).
vorrei farlo fare di notte al pc.
mi hanno consigliato di fare un batch...ma non ho idea di come fare.
queto file dovrebbe, in sequenza:
1)aprire il primo file vattelappesca1.for in Digital Visual Fortran
2)compilarlo (premere il tastino "compile")
3)rispondere "si" alle tre finestre di overwriting del progetto che compaiono
4)eseguirlo (premere il tastino "run"):si esegue in una finestra dos e alla fine compare "Premere un tasto per continuare..."
5)premere un tasto qualsiasi... :D
6)chiudere Digital Visual Fortran
ripetere queste 6 operazioni per 5 o 6 volte.
si può fare?
se sto chiedendo cose assurde o troppo semplici non mi sbeffeggiate troppo, ok?
ciao
Forse si può fare... però prima sarebbe necessario sapere una cosa: il programma che usi per compilare (Digital Visual Fortran) ammette una modalità a riga di comando? Se sì, un file batch è probabilmente la cosa migliore: altrimenti, bisogna pensare ad un metodo più complesso...
grazie per la risposta.
per "modalità a riga di comando" cosa intendi?
ciao
Le applicazioni Windows, anche se dotate di finestra come tutte le applicazioni, possono essere avviate anche dal prompt dei comandi, digitando il nome del programma associato ad esse. Se l'applicazione lo prevede, è possibile mettere dei parametri dopo la riga di comando, in maniera che il programma esegua automaticamente all'avvio determinate operazioni, oppure che esso si configuri in un determinato modo, senza che l'utente debba compiere alcuna operazione.
Mi spiego meglio con un esempio: tutti conosciamo il blocco note di Windows, per avviarlo di solito si va su Start -> Tutti i programmi -> Accessori -> Blocco Note. Però si potrebbe avviare anche digitando "notepad" al prompt dei comandi: la cosa interessante di questa modalità, è che se tu scrivessi dopo la parola "notepad" il nome di un file di testo da elaborare, automaticamente il Blocco Note si avvierebbe tentando di aprire proprio quel file!
Se il tuo compilatore ammettesse una modalità batch, cioè fatta appositamente pensando a chi ha le tue esigenze, basterebbe scrivere in un file batch qualcosa tipo:
nome_programma --compile=nome_file_da_compilare -overwrite
per compilare e
nome_programma --execute=nome_file_compilato
per eseguire il programma.
Domando scusa se ti avessi per caso annoiato con cose che tu sapevi già, era solo per fare chiarezza.
Ho dato per scontato che tu utilizzassi Windows: nel caso tu dovessi farlo con Linux, la cosa è al 99,9% fattibile (e più semplice, IMHO).
Originariamente inviato da Mixmar
Le applicazioni Windows, anche se dotate di finestra come tutte le applicazioni, possono essere avviate anche dal prompt dei comandi, digitando il nome del programma associato ad esse. Se l'applicazione lo prevede, è possibile mettere dei parametri dopo la riga di comando, in maniera che il programma esegua automaticamente all'avvio determinate operazioni, oppure che esso si configuri in un determinato modo, senza che l'utente debba compiere alcuna operazione.
Mi spiego meglio con un esempio: tutti conosciamo il blocco note di Windows, per avviarlo di solito si va su Start -> Tutti i programmi -> Accessori -> Blocco Note. Però si potrebbe avviare anche digitando "notepad" al prompt dei comandi: la cosa interessante di questa modalità, è che se tu scrivessi dopo la parola "notepad" il nome di un file di testo da elaborare, automaticamente il Blocco Note si avvierebbe tentando di aprire proprio quel file!
Se il tuo compilatore ammettesse una modalità batch, cioè fatta appositamente pensando a chi ha le tue esigenze, basterebbe scrivere in un file batch qualcosa tipo:
nome_programma --compile=nome_file_da_compilare -overwrite
per compilare e
nome_programma --execute=nome_file_compilato
per eseguire il programma.
Domando scusa se ti avessi per caso annoiato con cose che tu sapevi già, era solo per fare chiarezza.
Ho dato per scontato che tu utilizzassi Windows: nel caso tu dovessi farlo con Linux, la cosa è al 99,9% fattibile (e più semplice, IMHO).
e io come faccio a sapere se si può fare?
non sei stato per niente noioso, anzi.
Originariamente inviato da peter2
e io come faccio a sapere se si può fare?
non sei stato per niente noioso, anzi.
Guarda la documentazione del programma ;) .
Originariamente inviato da Mixmar
Guarda la documentazione del programma ;) .
come si dice in inglese "modalità a riga di comando" :
"command line mode"?:uh:
ciao
command line options o syntax o ...
Comunque, leggendo qui: http://crydee.sai.msu.ru/~vab/fortran.doc/dwf6/dvf_pg.pdf
Ho dedotto che il comando dovrebbe essere qualcosa tipo:
df nome_file_da_compilare /exe:nome_del_file_compilato
Potresti fare un file di questo tipo (è solo un'idea):
@echo off
rem Compila ed esegue un programma FORTRAN
echo+
echo Sintassi: compila nomefile (senza .for)
echo+
df %1.for /exe:%1.exe
%1.exe
if errorlevel 0 goto ok
echo+
echo Si e' verificato un errore nell'esecuzione del programma...
echo+
goto end
:ok
echo+
echo Programma %1.exe eseguito!
echo+
:end
E chiamare il file 'compila.bat'...
Non so se funziona...
Sempre dalla documentazione, prima di lanciare il file bat dovresti trovare ed eseguire il file DFVARS.BAT (credo).
Poi ti prepari un altro file bat, con l'elenco dei file da compilare, fatto così:
compila file1
...
compila fileN
Dovrebbe funzionare... :what:
@echo off
rem Compila ed esegue un programma FORTRAN
echo+
echo Sintassi: compila nomefile (senza .for)
devo inserire il path completo del file?
echo+
df %1.for /exe:%1.exe
%1.exe
if errorlevel 0 goto ok
echo+
echo Si e' verificato un errore nell'esecuzione del programma...
echo+
goto end
ma questo programma batch come fa a sapere dove è il file .exe?
:ok
echo+
echo Programma %1.exe eseguito!
echo+
:end
E chiamare il file 'compila.bat'...
Non so se funziona...
Sempre dalla documentazione, prima di lanciare il file bat dovresti trovare ed eseguire il file DFVARS.BAT (credo).
Poi ti prepari un altro file bat, con l'elenco dei file da compilare, fatto così:
compila file1
...
compila fileN
Dovrebbe funzionare... :what:
mmmm non capisco se l'esecuzione del comando df aprirà la finestra di Digital Fortran (e in quel caso non capisco chi risponderà ai messaggi di richiesta di conferma di overwriting del progetto), oppure appariranno tutte le finestre normali come se stessi facendo io i passi del .bat
Originariamente inviato da peter2
@echo off
rem Compila ed esegue un programma FORTRAN
echo+
echo Sintassi: compila nomefile (senza .for)
devo inserire il path completo del file?
Sì, devi inserire il path completo: penso che potresti salvare il file bat nella cartella che contiene l'eseguibile (df).
Originariamente inviato da peter2
echo+
df %1.for /exe:%1.exe
%1.exe
if errorlevel 0 goto ok
echo+
echo Si e' verificato un errore nell'esecuzione del programma...
echo+
goto end
ma questo programma batch come fa a sapere dove è il file .exe?
Nella seconda riga gli dico di creare un file che (suppongo) verrà creato nella stessa cartella in cui si trova il sorgente: poi lo esegue direttamente (se gli dai il path completo funziona ugualmente).
Originariamente inviato da peter2
:ok
echo+
echo Programma %1.exe eseguito!
echo+
:end
E chiamare il file 'compila.bat'...
Non so se funziona...
Sempre dalla documentazione, prima di lanciare il file bat dovresti trovare ed eseguire il file DFVARS.BAT (credo).
Poi ti prepari un altro file bat, con l'elenco dei file da compilare, fatto così:
compila file1
...
compila fileN
mmmm non capisco se l'esecuzione del comando df aprirà la finestra di Digital Fortran (e in quel caso non capisco chi risponderà ai messaggi di richiesta di conferma di overwriting del progetto), oppure appariranno tutte le finestre normali come se stessi facendo io i passi del .bat
Questo non lo so, mi spiace... :( Ma presumo che, come molti altri compilatori, questa modalità batch sia stata creata proprio per non dovere interagire col programma (a.k.a. cliccare sulle finestre, eccetera) e far eseguire le compilazioni in modo automatico. Quindi penso che non compaia nessuna finestra e nessun messaggio: d'altra parte, non ho il programma e non posso fare le prove... e poi non conosco il FORTRAN! :p :p :p
Originariamente inviato da Mixmar
Nella seconda riga gli dico di creare un file che (suppongo) verrà creato nella stessa cartella in cui si trova il sorgente: poi lo esegue direttamente (se gli dai il path completo funziona ugualmente).
in effetti quando faccio "run" lui lancia "nome_programma.exe" ma io non sono mai riuscito a capire dove crei qusto eseguibile.
Ci sarebbe pure la possibilità di salvare un exe direttamente da DF (e in quel caso sarebbe più facile fare il .bat, giusto?) ma bisogna fare delle cose con delle dll che non so manc che vuol dire...quasi quasi però mi ci metto a studiarle!!:muro:
comunque tra un po' provo il batch che mi hai postato se funziona.
ah, dimenticavo grazie dell'aiuto!!
;)
ho scoperto dove df salva i .exe
quindi in pratica potrei (potresti :D ) fare un semplicissimo .bat che lancia gli exe uno dopo l'altro, giusto.
io li compilo tutti precedentemente così sono pronti per essere eseguiti.
poi ho provato a eseguire un .exe direttamente dal win e non c'è nemmeno bisogno di "premere un tasto per continuare..."
ottimo:winner:
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.