Penjadwal Tugas Windows - jalankan tugas sekali sehari saat masuk

3

Saya mencoba mengatur tugas jadwal untuk menjalankan exe tepat sekali sehari. Saya sudah mencoba yang berikut ini:

Pemicu setiap hari jam 4:00 pagi, "jalankan tugas sesegera mungkin setelah awal yang dijadwalkan tidak terjawab"

Pendekatan ini berfungsi dengan baik jika saya tidak memiliki kata sandi yang ditetapkan pada akun saya, dalam hal ini Windows mem-boot langsung ke Desktop - setelah penundaan singkat, tugas berjalan.

Ketika saya menambahkan kata sandi ke akun saya, tugas tidak lagi berjalan. Dalam riwayat tugas saya melihat peringatan dicatat:

Penjadwal Tugas tidak meluncurkan tugas "X" karena pengguna "Y" tidak masuk saat kondisi peluncuran terpenuhi. Tindakan Pengguna: Pastikan pengguna masuk atau ubah definisi tugas untuk memungkinkan peluncuran saat pengguna keluar.

Ini sepertinya peringatan bodoh - di bawah "Opsi keamanan" Saya memiliki "Jalankan hanya ketika pengguna masuk" dipilih. Mengapa Penjadwal Tugas mencoba meluncurkan tugas sebelum pengguna masuk?

Pemicu setiap hari jam 4:00 pagi dan "saat masuk", jalankan sesegera mungkin

Pendekatan ini tidak memiliki efek yang saya maksudkan, yaitu saya inginkan kedua ketentuan menjadi benar, yaitu jika "setelah 4:00 pagi setiap hari" adalah benar dan "masuk" adalah benar, maka jalankan tugas; dan untuk setiap acara "masuk" berturut-turut hari itu, "setelah pukul 4:00 setiap hari" tidak akan benar sehingga akan menunggu hari berikutnya. Sayangnya ini bukan cara Penjadwal Tugas bekerja, dan dengan pendekatan ini, tugas berjalan setelahnya setiap masuk.

Jalankan apakah pengguna masuk atau tidak

Saya tidak bisa menggunakan pendekatan ini karena exe yang saya coba jalankan kadang-kadang membutuhkan input pengguna ketika sudah selesai. Secara umum, ada berbagai alasan yang membuat orang tidak dapat menggunakan opsi ini.

Pilihan lain

Dalam bidang pemecahan masalah, saya sedang mempertimbangkan untuk menulis skrip batch yang akan menulis ke file dan dapat mendeteksi jika sudah dipanggil sebelumnya.

Tentunya harus ada cara yang lebih baik untuk mencapai kasus penggunaan penjadwalan yang tampaknya umum dan sederhana ini?

Jim
sumber
@ 1Fish_2Fish_RedFish_BlueFish Ini adalah program cadangan usang yang disebut VersionBackup. Pada dasarnya ini berjalan dengan jendela yang menampilkan kemajuan dan pada akhir menjalankan muncul jendela jika ada masalah. Sayangnya tidak memiliki opsi baris perintah yang terdokumentasi. Pada Windows 7 memiliki beberapa cara built-in untuk hanya menjalankan sendiri sekali sehari tetapi sejak memutakhirkan ke Windows 10 ini tidak lagi berfungsi. Jadi jika itu berjalan untuk kedua kalinya, itu mengulangi proses pencadangan.
Jim
Kalau begitu Anda mungkin bisa hanya membuat skrip batch sederhana, masukkan beberapa logika di dalamnya untuk terlebih dahulu memeriksa file "periksa" yang mungkin disebut sesuatu seperti VersionBackup_20160201.txt dan jika TIDAK ada, buat, lalu jalankan aplikasinya. Jika TIDAK ADA, maka JANGAN menjalankan VersionBackup.exe dan keluar. Dengan cara ini Anda memastikan per hari mis. & lt; YYYYMMDD & gt; bahwa itu hanya berjalan sekali dan membuat file itu tepat sebelum itu berjalan. Jika Anda berminat, saya punya contoh skrip logika yang akan saya tambahkan sebagai jawaban jika Anda pikir itu berpotensi menjadi solusi yang dapat Anda gunakan atau setidaknya tes dengan mungkin?
Pimp Juice IT
Selain komentar saya di atas, dapatkah Anda memberi tahu saya jika ini adalah situs dan perangkat lunak yang Anda gunakan, dan konfigurasi mana yang Anda gunakan jika demikian (mis. Klien dan server, master, dll.)? sb-aw.com/download.html
Pimp Juice IT
@ 1Fish_2Fish_RedFish_BlueFish Terima kasih, itu akan berguna. Situs yang Anda temukan benar, saya menggunakan versi "master", yang merupakan alat konsumen non-perusahaan mereka.
Jim

Jawaban:

1

Jalankan tugas sekali sehari saat masuk

Saya mencoba mengatur tugas jadwal untuk menjalankan exe tepat sekali   hari.

Saya sedang mempertimbangkan untuk menulis skrip batch yang akan menulis ke file   dan dapat mendeteksi jika sudah dipanggil sebelumnya.

Oke, jadi di bawah ini adalah contoh dengan logika skrip batch yang sangat dasar dan sederhana seperti yang Anda nyatakan dalam komentar mungkin berguna dalam kasus Anda per masalah yang Anda hadapi.

Saya juga akan merujuk posting lain (di bagian bawah jawaban ini) pada Penjadwal Tugas dengan gotcha, dll. Untuk berjaga-jaga jika Anda memiliki masalah lebih lanjut dengan Penjadwal Tugas tidak berfungsi seperti yang diharapkan ketika menjalankan skrip batch. Meskipun opsi yang Anda pilih secara khusus dalam konfigurasi mungkin berbeda seperti halnya OS, pegambilan pada tingkat ini kemungkinan masih sama, jadi lihatlah dengan cepat pada pos itu juga jika Anda memiliki masalah dengan penjadwalan batch dengan Penjadwal Tugas tidak. bekerja seperti yang diharapkan.


Rincian Skrip Dasar

  • Itu FOR /F lingkaran menciptakan YYYYMMDD variabel untuk digunakan untuk tanggal saat ini.

  • Itu CheckDir adalah jalur drive lokal atau bahkan jalur UNC \\servername\sharename\folder Anda akan meletakkan file cek kecil ini dengan YYYYMMDD bagian dari nama file itu setiap hari.

    • Ubah saja C:\Path atau pasang jalur UNC ke tempat yang perlu ditunjukkan di lingkungan Anda
  • Itu checkfile adalah HANYA nama file dengan %CheckDir%\ di depannya dan %DT% ditambahkan ke akhir sebelum ekstensi .txt. Misalnya akan memberi Anda hasil akhir C:\Path\VersionBackup_20130202.txt untuk hari ini seperti dalam contoh saya.

    • Ini pada dasarnya akan memeriksa apakah file ada untuk hari ini, jika demikian, akhiri skrip, jika tidak ada, buat dan kemudian jalankan VersionBackup.exe dari apa pun nama EXE itu dipanggil. Dengan cara ini, hal ini dapat dijadwalkan dengan Penjadwal Tugas untuk sekali dalam satu jam menunjuk ke skrip batch dan per skrip skrip batch, itu hanya akan diizinkan untuk dijalankan sekali per hari.
  • Itu START "" "C:\Path\VersionBackup.exe" hanya perlu menunjuk ke jalur penuh di mana nama EXE ada yang melakukan operasi cadangan versi.

Contoh Skrip Batch

@ECHO ON

:::: SET YYYYMMDD format for date
FOR /F "TOKENS=2-4 DELIMS=/ " %%A IN ("%DATE%") DO SET "DT=%%C%%B%%A"

:SetCheckFile
SET CheckDir=C:\Path
SET checkfile=%CheckDir%\VersionBackup_%DT%.txt
IF NOT EXIST "%CheckDir%" MD "%CheckDir%"
IF EXIST "%checkfile%" GOTO EOF
ECHO Creating the check file for date %DT% to ensure only one Version Backup run for the day>>"%checkfile%"

:StartApp
START "" "C:\Path\VersionBackup.exe"
GOTO EOF

Pimp Juice IT
sumber
Terima kasih, ini berhasil! Saya perhatikan di sistem saya bahwa% DATE% mengevaluasi ke 2016/02/02, jadi saya mengubah loop untuk FOR /F "TOKENS=1-3 DELIMS=/ " %%A IN ("%DATE%") DO SET "DT=%%A%%B%%C"
Jim
0

Letakkan .exe di salah satu folder berikut untuk menjalankannya ketika komputer dinyalakan. Anda tidak perlu melakukan apa pun di Penjadwal Tugas.

Hanya untuk pengguna saat ini:

C: \ Users \ username \ AppData \ Roaming \ Microsoft \ Windows \ Start Menu \ Programs \ Startup

Untuk semua pengguna:

C: \ ProgramData \ Microsoft \ Windows \ Start Menu \ Programs \ Startup

Semoga ini membantu!

Spencer4134
sumber