PDA

View Full Version : Aiuto su creazione file batch


kuabba82
12-02-2018, 14:10
Salve, innanzitutto volevo sapere se è possibile creare un file batch dove alcune operazioni vengono eseguite solo dopo il termine di altre. Ad esempio voglio includere un comando per far partire un'installazione e subito dopo un comando per far partire il setup di un aggiornamento. Se li metto insieme nello stesso file batch mi partono insieme, mentre io vorrei che il secondo comando, quello dell'aggiornamento, partisse solo dopo che l'installazione impartita col primo comando sia finita. Altrimenti devo creare più file per ogni operazione.

Seconda cosa: è possibile dopo l'esecuzione di un comando visualizzare una scritta impostata da me?

Ultima domanda: dovendo far eseguire questi batch da unità cd si può impostare un comando affinchè parta qualsiasi lettera sia stata assegnata all'unità cd? Cioè se io metto un comando di far partire un certo file da E:\, se questa è la lettera del lettore cd del pc partirà, ma se mettiamo che la lettera fosse F: questo non parte, e io vorrei capire se c'è un modo per farlo partire qualsiasi sia la lettera assegnata.

Spero di essermi fatto capire, attendo risposte. Grazie

!fazz
12-02-2018, 18:04
1) per avere un batch sincrono ti basta mettere il comando che lancia l'eseguibile (per avere un batch asincrono che non aspetti la fine del programma precedente devi mettere start prima del comando).
2) usa echo
3) Il drive di esecuzione lo trovi con %~d0

piccolo esempio dove trovi tutto quello che hai chiesto


@echo off
echo esegui prima calc e quando lo chiudi notepad
pause
calc.exe
notepad.exe
echo lancio sia calc che notepad insieme
pause
start calc.exe
start notepad.exe
set _SCRIPT_DRIVE=%~d0
echo il mio drive di esecuzione e':
echo %_SCRIPT_DRIVE%

PAUSE

kuabba82
12-02-2018, 18:36
Intanto grazie per la risposta. Ho creato il batch con il tuo script per vedere come funziona ma anche senza START i due programmi mi si aprono insieme. Poi ho visto che hai solo specificato il nome dei due programmi, quindi non serve specificare tutto il percorso?

Invece per quanto riguarda il drive di esecuzione non volevo intendere quello che hai detto tu. Ovviamente se non serve specificare il percorso dei file da eseguire non mi serve più saperlo, invece nel caso io debba specificarlo, quello che volevo dire è che se io scrivo ad esempio @echo off
D:\calc.exe supponendo che debba eseguire il file calc.exe sul cd e su quel pc la lettera assegnata non è D: ma E: suppongo che l'istruzione non funzioni. Quindi quello che chiedevo è se al posto di inserire la lettera si può inserire qualcosa che faccia trovare allo script da solo la lettera del drive e quindi il percorso al file calc.exe da eseguire a prescindere se la lettera assegnata sia D:, E: o altro.

!fazz
13-02-2018, 08:53
Intanto grazie per la risposta. Ho creato il batch con il tuo script per vedere come funziona ma anche senza START i due programmi mi si aprono insieme. Poi ho visto che hai solo specificato il nome dei due programmi, quindi non serve specificare tutto il percorso?

Invece per quanto riguarda il drive di esecuzione non volevo intendere quello che hai detto tu. Ovviamente se non serve specificare il percorso dei file da eseguire non mi serve più saperlo, invece nel caso io debba specificarlo, quello che volevo dire è che se io scrivo ad esempio @echo off
D:\calc.exe supponendo che debba eseguire il file calc.exe sul cd e su quel pc la lettera assegnata non è D: ma E: suppongo che l'istruzione non funzioni. Quindi quello che chiedevo è se al posto di inserire la lettera si può inserire qualcosa che faccia trovare allo script da solo la lettera del drive e quindi il percorso al file calc.exe da eseguire a prescindere se la lettera assegnata sia D:, E: o altro.

1) strano nel mio pc i due programmi si aprono in sequenza
2) per calc e notepad puoi non mettere il percorso perchè sono mappati nelle variabili di ambiente
3) al posto della lettera puoi usare la variabile _SCRIPT_DRIVE che ti ho creato apposta

kuabba82
13-02-2018, 09:24
1) strano nel mio pc i due programmi si aprono in sequenza
2) per calc e notepad puoi non mettere il percorso perchè sono mappati nelle variabili di ambiente
3) al posto della lettera puoi usare la variabile _SCRIPT_DRIVE che ti ho creato apposta

Perdonami ma non ho capito come fare. Io scrivo ad esempio @echo off
D:\calc.exe se voglio eliminare la D in modo che anche se il drive fosse E: scrivo così @echo off
_SCRIPT_DRIVE=%~d0\calc.exe?
Ho provato ma credo non sia così perchè non succede nulla...

!fazz
13-02-2018, 09:42
1) per usare una variabile in batch devi metterla tra % (vedi come ho fatto l'echo)
2) per iniziare prova con un semplice

cd %_SCRIPT_DRIVE%
calc.exe