Jalankan file batch dengan penjadwal tugas Windows

155

Saya punya file batch daily.bat, ini kode:

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

Dan saya membuat tugas dengan penjadwal tugas di Windows 7. Ketika saya menjalankan batch secara manual, semuanya berjalan dengan baik, tetapi ketika saya mencoba menjalankannya dengan penjadwal tugas tidak ada yang terjadi.

Tindakan saya adalah

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

UAC tidak aktif dan saya Admin.

Adakah yang tahu mengapa ini tidak berhasil?

Ruben
sumber
Tidak yakin apakah pertanyaan ini tidak aktif tetapi Anda mungkin mendapatkan respons yang lebih baik di serverfault.com untuk itu.
Hans Olsson
Terima kasih saya juga akan mencoba mempostingnya di serverfault
Ruben
ini juga bisa bermanfaat: serverfault.com/questions/734035/…
Ruben

Jawaban:

286

Saya menghadapi masalah yang sama, tetapi saya menemukan solusi lain tanpa harus memodifikasi skrip batch saya.

Satu-satunya hal yang saya lewatkan adalah pada pengaturan 'Aksi' - "Mulai dalam (opsional)" pilihan.

Buka properti tugas -> tab Tindakan -> Edit -> Isi seperti di bawah ini:

  1. Tindakan : Mulai program
  2. Program / skrip : path ke skrip batch Anda misC:\Users\beruk\bodo.bat
  3. Tambahkan argumen (opsional) : <jika perlu - tergantung pada skrip Anda>
  4. Mulai dalam (opsional) : Letakkan path lengkap ke lokasi skrip batch Anda mis. C:\Users\beruk\(Jangan beri tanda kutip di Mulai Mulai)

Kemudian Klik OK

Ini bekerja untuk saya. Semoga berhasil!

Ghazi
sumber
8
Saya sadar posting aslinya sudah cukup tua. Tetapi posting ini adalah salah satu tautan teratas dalam pencarian google ketika saya mencoba jawaban untuk masalah ini. Jadi saya pikir saya ingin berbagi temuan. Untuk jaga-jaga, siapa pun termasuk saya lupa akan hal ini.
Ghazi
4
Saya tidak percaya Anda benar-benar membutuhkan nilai 'Mulai dalam (opsional)' - Saya dapat menjalankan file .bat yang sederhana dan mandiri tanpa itu. Terima kasih untuk langkah-langkah yang jelas - sangat membantu bagi mereka yang mencari jalan kaki yang sederhana!
DCaugs
23
@ DCaugs, Tanpa Start Inset parameter, file batch terjadwal saya tidak akan berjalan sama sekali. (Windows 7)
Justin Skiles
2
Solusi ini tidak berhasil untuk saya. Jawaban yang diberikan oleh @Arun Raja bekerja dengan baik.
Cagy79
7
@ DCaugs Start inAlasan utama saya berhasil.
Gustavo
54

Tidak satu pun dari metode di atas yang berfungsi. Saya mencobanya dengan cara ini seperti yang dikatakan dalam tutorial dan berhasil.

Tindakan:

Start a program 

Program / skrip:

cmd

Tambahkan argumen:

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

Bekerja untuk saya di Win7 Pro. Anda harus memiliki akun dengan kata sandi (kata sandi kosong tidak bagus)

Arun Raja
sumber
1
Saya setuju! tidak ada solusi sebelumnya yang berfungsi untuk saya di Windows Server 2008. Jawaban ini berhasil bagi saya! Terima kasih.
Cagy79
Saya berharap saya bisa memberi Anda +2000. Saya telah mencoba berbagai pendekatan sepanjang hari dan tidak ada yang berhasil kecuali solusi Anda. Saya harus meluncurkan file batch yang pada gilirannya meluncurkan file batch lain 10 kali dengan parameter yang berbeda. Dari konsol semuanya bekerja dengan baik tetapi Penjadwal Tugas menolak untuk membuka lebih dari 4 proses pada saat yang sama. Itu aneh ... Dengan teknik Anda semua 10 proses diluncurkan.
Icarus
Metode ini bekerja untuk saya. Tetapi, di penjadwal, di tab riwayat, tugas tersebut langsung selesai dengan sukses, karena tugasnya adalah cmd, tetapi bukan file .bat yang diluncurkan. Karena file bat, operasi cadangan, berakhir dalam 2-3 jam, saya tidak tahu statusnya.
azzurroverde
Anda harus menyimpan pemberitahuan email di akhir penyelesaian file bat untuk memberi tahu statusnya. itu salah satu cara.
Arun Raja
Ini berfungsi, bersama dengan tip yang seharusnya diatur untuk dijalankan dalam direktori yang ditentukan seperti disebutkan dalam jawaban yang diterima @ Ghazi, memastikan bahwa "jalankan dengan hak istimewa tertinggi" juga dipilih.
mheavers
43

Bagi mereka yang file batnya masih tidak berfungsi di Penjadwal Tugas Windows 8+, satu hal yang ingin saya tambahkan ke jawaban Ghazi - setelah banyak penderitaan:

1) Di bawah Tindakan, Pilih "Buat tugas BASIC ", bukan "Buat Tugas"

Itu berhasil bagi saya, ditambah masalah lain yang tidak boleh dilupakan:

  1. Gunakan jalur Mulai Masuk ke file kumpulan Anda, meskipun dikatakan opsional
  2. penggunaan tanda kutip, jika Anda perlu untuk, dalam Start entri Program> Program / script yaitu "C: \ skrip saya \ runme.bat" ...
  3. TETAPI TIDAK menggunakan tanda kutip di bidang Mulai di Anda. (Gila tapi benar!)

Ini berfungsi tanpa perlu memicu prompt perintah.

(Maaf perwakilan saya terlalu rendah untuk menambahkan tip Tugas Dasar saya ke komentar Ghazi)

micstr
sumber
21

Pastikan "Mulai" tidak memiliki KUTIPAN.

Jonathan
sumber
7

Ini bekerja sekarang. Inilah yang saya lakukan. Anda mungkin tidak akan memerlukan semua langkah ini untuk membuatnya bekerja tetapi untuk memastikannya, cobalah semuanya:

  • Periksa parameter akun dari tugas terjadwal Anda dan pastikan sudah diatur untuk menjalankan apakah seseorang masuk atau tidak ke dalam mesin

  • periksa jalankan dengan sebagian besar hak istimewa / hak

  • Pastikan Anda pergi ke path lengkap terlebih dahulu: cd C: \ inetpub \ wwwroot \ infoweb \ factuur \ cron

  • Jangan gunakan tanda kutip ganda dalam file batch Anda (tidak tahu mengapa tetapi tampaknya membantu)

  • Jadilah super admin, masukkan 'Net user administrator / active: yes' di command prompt, logout dan login sebagai super admin, jadi UAC mati

Ruben
sumber
2
Maaf untuk mengatakannya, tetapi ini adalah jawaban yang ditulis dengan sangat buruk. Saya akan memastikan jawaban yang tepat dipilih sebagai jawaban yang diterima.
jwize
5

Pastikan "Mulai Masuk" TIDAK diakhiri dengan BACKSLASH.

Michael Kehoe
sumber
1
Bisakah Anda memperjelas versi OS atau jenis tugas atau apa pun informasi ini berlaku untuk? Jawaban yang diterima mencakup a \ jadi itu harus bekerja pada beberapa sistem - di mana ia tidak bekerja?
lessthanideal
Ini memperbaiki tugas 'foo.cmd' terjadwal untuk saya di Windows Server 2012. Dengan 'Mulai di' set ke 'C: \ Foo \' tugas gagal dengan kesalahan kode keluar 0x8007001, tetapi dengan 'Mulai dalam' diatur ke 'C : \ Foo 'tugasnya berjalan dengan baik.
Aaron
5

Punya masalah di mana tugas saya tidak menyala hanya karena itu berjalan di laptop tanpa kabel listrik ... Di bawah tab kondisi, secara default diperiksa sehingga tugas tidak akan berjalan saat daya AC tidak terhubung.

Chriz
sumber
3

Di bawah Windows7 Pro, saya menemukan bahwa solusi Arun bekerja untuk saya: Saya bisa membuatnya bekerja bahkan dengan "tidak ada pengguna yang masuk", saya memang memilih menggunakan priveledges tertinggi.

Dari pengalaman masa lalu, Anda harus memiliki akun dengan kata sandi (kata sandi kosong tidak baik), dan jika program tidak meminta kata sandi saat menyelesaikan wisaya, masuk kembali dan edit sesuatu hingga benar!

Ini adalah metode dalam hal tidak jelas mana yang berhasil

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

Saya mengacaukan ini selama beberapa jam dan mencoba berbagai saran.

Saya akhirnya berhasil dengan melakukan hal berikut:

Tindakan: Mulai program

Program / Skrip: C: \ scriptdir \ script.bat

Tambahkan argumen (opsional) script.bat

Mulai dalam (opsional): c: \ scriptdir

hanya berjalan saat pengguna masuk

dijalankan dengan hak istimewa tertinggi

konfigurasikan untuk: Windows Vista, Windows Server 2008

Robb
sumber
2

Jika semua yang lain gagal untuk Anda di sini, pastikan bahwa pengguna yang Anda coba jalankan tugas memiliki akses ke file yang Anda coba gunakan.

Dalam kasus saya, saya mencoba menjalankan file batch dari C: \ Users \ Administrator \ Desktop yang tidak dapat diakses oleh akun. Memindahkannya ke lokasi netral di C: \ menyelesaikan masalah.

Vince
sumber
1

Silakan periksa akun pengguna mana yang Anda gunakan untuk menjalankan tugas kami. Mungkin saja Anda menjalankan tugas Anda dengan pengguna yang berbeda dari pengguna default Anda, dan pengguna ini memerlukan beberapa hak istimewa tambahan. Mungkin juga terjadi bahwa tugas dijalankan tetapi Anda tidak dapat melihat efek apa pun karena file kumpulan menunggu beberapa respons pengguna, jadi silakan periksa pengelola tugas jika Anda melihat proses Anda berjalan. Setelah itu terjadi, saya menjadwalkan batch dengan pembaruan svn dari beberapa halaman web dan proses hang karena svn meminta untuk menerima sertifikat server.

pengguna6039542
sumber
1
  1. Jangan gunakan tanda kutip ganda dalam file cmd / batch Anda
  2. Pastikan Anda masuk ke path lengkap mulai dari (opsional) :
    C: \ Necess_file \ Reqular_task \ QDE \ cmd_practice \

masukkan deskripsi gambar di sini

Shahidul Islam Molla
sumber
1

Saya memposting jawaban untuk pertanyaan ini di sini dan di sini .

masukkan deskripsi gambar di sini

ToCarbajal
sumber
Selama Anda yakin bahwa jawaban lain sudah benar, Anda dapat menandai pertanyaan sebagai duplikat.
Badro Niaimi
0

Menggunakan tombol Run di jendela utama Penjadwal Tugas untuk menguji beberapa variasi akhirnya menemukan pengaturan yang benar. Dua opsi ini harus digabungkan: -Jalankan Hanya ketika pengguna masuk -Jalankan dengan hak istimewa tertinggi. Semua variasi lainnya gagal. Ini menyebalkan semua waktu yang terbuang untuk ini, tapi setidaknya itu berhasil. OS: WINDOWS 8 CORE (BASIC) VERSION

sapitron
sumber
0

Coba jalankan tugas dengan hak istimewa tinggi.

letakkan \ di ujung jalan di "mulai di folder" seperti c: \ temp \

Saya tidak tahu mengapa, tetapi ini kadang-kadang berhasil bagi saya.

C Jee
sumber
0

Tindakan: Start a Program

Program / skrip: C:\Windows\System32\cmd.exe

Tambahkan argumen: /k start "" "E:\scripts\example.bat"

Tambahkan exitke akhir file batch Anda.

Jendela cmd tidak akan ditampilkan jika Anda memilih Run whether user is logged in or not. Anda harus memilih Run only when user is logged onuntuk melihat jendela beraksi.

Ethan Allen
sumber