Esegui un file batch con l'utilità di pianificazione di Windows


155

Ho un file batch daily.bat, questo è il codice:

cd C:\inetpub\wwwroot\infoweb\factuur\cron
c:\PHP\php.exe -f ./cron_pdf.php
ftp -s:ftp_upload.txt ftp.site.be

E ho creato un'attività con l'utilità di pianificazione in Windows 7. Quando eseguo manualmente il batch, tutto va bene, ma quando provo a eseguirlo con l'utilità di pianificazione non succede nulla.

La mia azione è

'run script' "C:\inetpub\wwwroot\site\x\cron\daily.bat"

Controllo account utente è disattivato e sono Amministratore.

Qualche idea sul perché questo non funziona?


Non sono sicuro che questa domanda sia offtopic ma potresti ottenere risposte migliori su serverfault.com .
Hans Olsson,

Grazie proverò anche a pubblicarlo su serverfault
Ruben il

anche questo può essere utile: serverfault.com/questions/734035/…
Ruben

Risposte:


286

Ho riscontrato lo stesso problema, ma ho trovato un'altra soluzione senza dover modificare il mio script batch.

L'unica cosa che mi sono perso è nelle impostazioni "Azione" - opzione "Avvia in (Opzionale)".

Vai alle proprietà dell'attività -> scheda Azione -> Modifica -> Compila come di seguito:

  1. Azione : avviare un programma
  2. Programma / script : percorso dello script batch ad esC:\Users\beruk\bodo.bat
  3. Aggiungi argomenti (facoltativo) : <se necessario - a seconda del tuo script>
  4. Inizia tra (facoltativo) : C:\Users\beruk\inserisci il percorso completo della posizione dello script batch, ad es.

Quindi fare clic su OK

Per me funziona. In bocca al lupo!


8
Sono consapevole che il post originale è piuttosto vecchio. Ma questo post era tra i link principali nella ricerca di Google quando stavo cercando la risposta a questo problema. Quindi penso che mi piacerebbe condividere i risultati. Per ogni evenienza, chiunque compreso me stesso lo sta dimenticando.
Ghazi,

4
Non credo che tu abbia realmente bisogno del valore 'Inizia in (opzionale)' - Sono in grado di eseguire un file .bat semplice e autonomo senza di esso. Grazie per i passaggi chiari: molto utile per chi cerca una semplice passeggiata!
DCaugs

23
@DCaugs, Senza il Start Inset di parametri, il mio file batch programmato non potrebbe essere eseguito. (Windows 7)
Justin Skiles,

2
Questa soluzione non ha funzionato per me. La risposta fornita da @Arun Raja ha funzionato bene.
Cagy79,

7
@DCaugs Start inÈ il motivo principale per cui ha funzionato per me.
Gustavo,

54

Nessuno dei metodi sopra indicati ha funzionato. L'ho provato in questo modo, come detto in un tutorial e ha funzionato.

Azione:

Start a program 

Programma / script:

cmd

Aggiungi argomenti:

/c start "" "E:\Django-1.4.1\setup.bat"

Ha funzionato per me su Win7 Pro. Devi avere un account con una password (le password vuote non vanno bene)


1
Concordo! nessuna delle precedenti soluzioni ha funzionato per me su un Windows Server 2008. Questa risposta ha funzionato per me! Grazie.
Cagy79,

Vorrei poterti dare un +2000. Ho provato diversi approcci per tutto il giorno e niente ha funzionato bene tranne la tua soluzione. Ho dovuto lanciare un file batch che a sua volta lancia un altro file batch 10 volte con parametri diversi. Dalla console tutto ha funzionato bene, ma l'Utilità di pianificazione ha rifiutato di aprire più di 4 processi contemporaneamente. È stato strano ... Con la tua tecnica sono stati lanciati tutti e 10 i processi.
Icaro,

Questo metodo ha funzionato per me. Tuttavia, nello scheduler, nella scheda Cronologia, l'attività viene completata immediatamente con esito positivo, poiché l'attività è il cmd, ma non il file .bat che avvia. Poiché il file bat, un'operazione di backup, termina in 2-3 ore, non ho idea del suo stato.
azzurroverde,

è necessario mantenere una notifica via e-mail al termine del completamento del file bat per notificarne lo stato. questo è un modo.
Arun Raja,

Questo ha funzionato, insieme al suggerimento che dovrebbe essere impostato per essere eseguito in una directory specificata come indicato nella risposta accettata di @ Ghazi, assicurandosi che anche "run with the high privileges" sia selezionato.
mheavers,

43

Per coloro i cui file bat non funzionano ancora nell'Utilità di pianificazione di Windows 8+, una cosa che vorrei aggiungere alla risposta di Ghazi - dopo molte sofferenze:

1) In Azioni, scegli "Crea attività BASIC ", non "Crea attività"

Ciò ha fatto per me, oltre agli altri problemi da non dimenticare:

  1. Utilizzare il percorso Start In per il file batch, anche se dice facoltativo
  2. usa le virgolette, se necessario, nella voce Avvia un programma> programma / script, ad esempio "C: \ my scripts \ runme.bat" ...
  3. MA NON usare le virgolette nel campo Inizia in. (Pazzo ma vero!)

Questo ha funzionato senza la necessità di attivare un prompt dei comandi.

(Mi dispiace che il mio rappresentante sia troppo basso per aggiungere il mio suggerimento Attività di base ai commenti di Ghazi)



7

Funziona ora. Questo è quello che ho fatto. Probabilmente non avrai bisogno di tutti questi passaggi per farlo funzionare, ma solo per essere sicuri provali tutti:

  • Controlla i parametri dell'account dell'attività pianificata e assicurati che siano impostati per essere eseguiti indipendentemente dal fatto che qualcuno abbia effettuato l'accesso o meno alla macchina

  • controlla eseguito con la maggior parte dei privilegi / diritti

  • Assicurati di andare prima al percorso completo: cd C: \ inetpub \ wwwroot \ infoweb \ factuur \ cron

  • Non usare virgolette doppie nei tuoi file batch (non so perché ma sembra aiutare)

  • Sii super amministratore, inserisci "Net user administrator / active: yes" nel prompt dei comandi, disconnetti e accedi come super admin, quindi UAC è disattivato


2
Mi dispiace dirlo, ma questa è una risposta scritta molto male. Vorrei assicurarmi che la risposta corretta sia selezionata come risposta accettata.
jwize,

5

Assicurarsi che "Start In" NON termini con un BACKSLASH.


1
Potresti chiarire quale versione del sistema operativo o tipo di attività o qualunque sia questa informazione applicabile? La risposta accettata include un \ quindi deve funzionare su alcuni sistemi - dove non funziona?
lessthanideal,

Ciò ha risolto un'attività pianificata 'foo.cmd' per me su Windows Server 2012. Con 'Avvia in' impostato su 'C: \ Foo \' l'attività non è riuscita con errore del codice di uscita 0x8007001, ma con 'Avvia in' impostato su 'C : \ Foo 'l'attività ha funzionato bene.
Aaron,

5

Si è verificato un problema a causa del quale l'attività non veniva avviata semplicemente perché era in esecuzione su un laptop senza cavo di alimentazione ... Nella scheda Condizioni, per impostazione predefinita è selezionata in modo che un'attività non venga eseguita mentre l'alimentazione CA non è collegata.


3

Sotto Windows 7 Pro, ho scoperto che la soluzione di Arun ha funzionato per me: ho potuto farlo funzionare anche senza "nessun utente connesso", ho scelto di utilizzare i privilegi più alti.

Dall'esperienza passata, è necessario disporre di un account con una password (le password vuote non vanno bene) e se il programma non richiede la password al termine della procedura guidata, tornare indietro e modificare qualcosa fino a quando non lo fa!

Questo è il metodo nel caso in cui non fosse chiaro quale funzionasse

Action: start a program
Program/script : cmd
      (doesn't need the .exe bit!)
Add arguments:
    /c start "" "E:\Django-1.4.1\setup.bat" 

3

Ho rovinato tutto questo per diverse ore e ho provato molti suggerimenti diversi.

Finalmente sono riuscito a farlo nel modo seguente:

Azione: avviare un programma

Programma / Script: C: \ scriptdir \ script.bat

Aggiungi argomenti (opzionale) script.bat

Inizia in (opzionale): c: \ scriptdir

eseguito solo quando l'utente ha effettuato l'accesso

eseguito con i massimi privilegi

configurare per: Windows Vista, Windows Server 2008


2

Se tutto il resto non riesce per te, assicurati che l'utente che stai tentando di eseguire l'attività abbia accesso al file che stai tentando di utilizzare.

Nel mio caso stavo cercando di eseguire un file batch da C: \ Users \ Administrator \ Desktop a cui l'account non poteva accedere. Spostandolo in una posizione neutra su C: \ risolto il problema.


1

Controlla quale account utente utilizzi per eseguire la nostra attività. Può succedere che esegui l'attività con un utente diverso da quello predefinito e questo utente richiede alcuni privilegi extra. Inoltre, può succedere che l'attività venga eseguita ma non si vede alcun effetto perché il file batch attende una risposta dell'utente, quindi controllare il task manager se si vede che il processo è in esecuzione. Una volta accade che pianifico un batch con l'aggiornamento svn di alcune pagine Web e il processo si blocca perché svn ha chiesto di accettare il certificato del server.


1
  1. Non usare virgolette doppie nel tuo file cmd / batch
  2. Assicurati di andare all'inizio del percorso completo in (facoltativo) :
    C: \ Necessary_file \ Reqular_task \ QDE \ cmd_practice \

inserisci qui la descrizione dell'immagine


1

Pubblico la risposta a questa domanda qui e qui .

inserisci qui la descrizione dell'immagine


Finché sei sicuro che l'altra risposta sia corretta, puoi contrassegnare la domanda come duplicata.
Badro Niaimi,

0

Utilizzando il pulsante Esegui nella finestra principale di Utilità di pianificazione per testare diverse varianti, sono state infine trovate le impostazioni corrette. Queste due opzioni devono essere combinate: -Esegui solo quando l'utente è connesso -Esegui con i privilegi più alti. Tutte le altre varianti sono fallite. È irritante tutto il tempo sprecato per questo, ma almeno funziona. OS: VERSIONE WINDOWS 8 CORE (BASIC)


0

Prova a eseguire l'attività con privilegi elevati.

metti un \ alla fine del percorso in "start in folder" come c: \ temp \

Non so perché, ma a volte funziona per me.


0

Azione: Start a Program

Programma / script: C:\Windows\System32\cmd.exe

Aggiungi argomenti: /k start "" "E:\scripts\example.bat"

Aggiungi exitalla fine del file batch.

La finestra cmd non verrà visualizzata se si seleziona Run whether user is logged in or not. Devi selezionare Run only when user is logged onper vedere la finestra in azione.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.