Kotak Windows 7 memiliki daftar tugas terjadwal -> Tugas Windows default + Tugas kustom tertentu yang semuanya dimulai dengan string tertentu. Kode sebelumnya menghapus semua tugas dengan perintah:
schtasks /Delete /TN * /F
Alih-alih, kami ingin mempertahankan tugas-tugas Windows default, dan secara selektif menghapus tugas-tugas yang dimulai dengan string tertentu abctask1
, katakan abctask2
,. Bagaimana cara melangkah lebih jauh? Terima kasih!
schtasks /Delete /TN abctask* /F
?/query
opsi tersebut, mengulanginya menemukan tugas-tugas yang cocok dengan pola yang Anda inginkan, dan membunuh mereka menggunakan nama lengkap mereka. Sesuatu seperti skrip Perl mungkin yang terbaik untuk tugas semacam ini.Jawaban:
Dengan asumsi tugas Anda adalah satu kata (misalnya, abctask1, abctask2 - bukan "abc task 1"), ini harus bekerja:
sumber
find
, menjadi kurang dari 1/4 ukuranfindstr
akan bereaksi lebih cepat. Juga, keduanya mendukung penggunaan tanda kutip untuk mengelilingi istilah pencarian (find
mengharuskan mereka), melakukan hal itu akan memungkinkan menemukan tugas-tugas seperti "abc task 1" yang Anda sebutkan.find
vsfindstr
, terutama dalam sesuatu yang sekecil ini. :-)for /f "tokens=2" %%x in ('schtasks /query /xml ^| findstr taskname') do
Jika Anda ingin wildcard (*) digunakan dalam pemilihan tugas yang akan dihapus, coba gunakan perintah batch sederhana ini:
(hanya sampel)
sumber
Saya berakhir di sini sambil mencari cara untuk secara otomatis menonaktifkan beberapa tugas terjadwal Windows stok. Saya tidak bisa mendapatkan salah satu contoh saat ini untuk menangani nama tugas dengan benar dengan garis miring terbalik dan spasi. Saya menemukan bahwa menggunakan format csv dan perintah find bekerja paling baik untuk saya:
sumber
Kalian sedikit membantu di sini. Sementara di atas berfungsi untuk nama yang lebih pendek dan 'user3490' memposting tambahan yang cukup bagus untuk string, sepertinya tidak bekerja dengan nama dengan spasi. Saya menemukan menggunakan wildcard dengan SCHTASKS bekerja dengan '.' daripada '*' dan menemukan modifikasi yang menarik pada string yang memungkinkan kesempatan yang sangat dibutuhkan! Saya akan menempelkan contoh apa yang saya gunakan di dalam file batch:
Terima kasih semuanya di sini untuk petunjuk yang luar biasa! Saya tahu topik ini sudah lebih dari setahun, tapi saya harap ini membantu orang lain yang mungkin belum sampai sejauh ini.
sumber
Jawaban Mark berfungsi dengan baik selama Anda memiliki nama tugas terjadwal yang cukup pendek, tetapi output default
schtasks /query
(format tabel) memotong nama tugas menjadi 32 karakter, yang menyebabkan kesalahan saat mencoba menghapusnya.Jika Anda perlu menangani tugas-tugas yang memiliki nama yang lebih panjang, saya akan merekomendasikan menggunakan format output daftar sebagai gantinya, yang tidak terpotong:
Jika tugas yang ingin Anda hapus memiliki awalan umum, Anda dapat lebih lanjut memperbaiki kecocokan dari findstr:
sumber