Mungkin membantu untuk memahami masalah dari sudut pandang yang berbeda .. Katakanlah Anda adalah programmer yang ditugasi menambah penjadwal tugas ke Windows. Bagaimana Anda melakukannya? Anda memiliki beberapa masalah yang harus dihadapi: Jika tugas dijalankan sebagai orang lain selain pengguna yang masuk, haruskah Anda mengganggu pengguna yang masuk dengan sembulan kesalahan? Bagaimana jika tidak ada pengguna yang login pada saat tugas dijalankan? Bagaimana dengan perbedaan antara program GUI dan program konsol? GUI tidak memiliki stdin, stdout, dan stderr; konsep itu tidak ada artinya di dalamnya. Bagaimana dengan program internal atau eksternal ke COMMAND.COM/CMD.EXE? Atau mesin scripting lainnya? Bagaimana dengan path dengan spasi pada nama perintah? Atau dalam parameter (opsi / argumen)? (Saat Anda mencoba untuk berurusan dengan sekarang ..)
Meskipun saya tidak 100% yakin tentang internal atau detail teknis lengkap dalam kasus ini, jawabannya sepertinya .. Tugas dijalankan dalam sesi non-interaktif yang terisolasi, yang tidak dapat berinteraksi dengan pengguna yang saat ini masuk (jika ada ); Itu dijalankan mengharapkan tidak ada output konsol, karena ini non-interaktif, itu tidak bisa hanya mengganggu pengguna yang login untuk menunjukkan output, bagaimanapun (dan jika ada output, stdin adalah bitbucket / NULL, stdout dan stderr bisa masuk ke fasilitas logging sistem); Spasi ditangani dengan melewati masalah: nama perintah diambil PERSIS sebagaimana adanya, dan parameter diteruskan ke perintah ditentukan dalam kotak input lain di properti Tugas.
Apa artinya semua itu adalah bahwa tugas Anda harus dijalankan seolah-olah itu seperti daemon (di dunia Un * x). Semuanya statis dan presisi. Nama perintah adalah nama perintah yang sebenarnya, tanpa parameter apa pun. Ini sering termasuk menjalankan penerjemah perintah / skrip, seperti CMD.EXE! Parameter, jika ada, ditentukan di tempat lain, dan harus diketahui ketika Anda mengatur tugas (yaitu, Anda tidak dapat mengubah parameter "on-the-fly"). Dan seterusnya.
Jadi, jika Anda ingin memasukkan parameter, Anda harus menggunakan bagian parameter untuk menentukan parameter. Penjadwal Tugas tidakcoba parsing nama perintah untuk membaginya menjadi "perintah" dan "args" seperti program baris perintah lakukan. Itu hanya memperlakukannya sebagai satu, nama perintah penuh besar. Demikian juga, jika Anda menginginkan parameter variabel, seperti menggunakan% 1 ..% n dalam file BATCH, Anda tidak dapat melakukannya dari Penjadwal Tugas itu sendiri; Anda harus menemukan cara lain. (Perhatikan bahwa Anda tidak dapat menggunakan variabel lingkungan, karena lingkungan yang diteruskan ke program tergantung pada lingkungan tugas dimulai, BUKAN lingkungan "saat ini".) Anda bisa menggunakan file sementara untuk menyimpan parameter, tetapi karena Anda harus menentukan nama file statis di properti Tugas, apa yang terjadi ketika Anda berada di jaringan dengan 5.000 pengguna dan empat di antaranya mencoba menjalankan tugas yang sama pada waktu yang sama? Mereka semua akan saling menjatuhkan mencoba untuk menulis ke file temp yang sama pada saat yang sama, mungkin juga bukan yang Anda inginkan. (Ada solusi untuk masalah ini juga, tapi itu terlalu jauh di luar cakupan pertanyaan dan jawaban ini ..)
Jadi jawaban terakhir: Dalam kasus sederhana - jalur yang ingin Anda lewati sebagai parameter statis dan tidak berubah - Anda juga harus menentukan parameter di properti Tugas yang sesuai (Argumen) daripada di kotak Program / Script , atau gunakan file batch. Dalam kasus yang lebih kompleks - Anda harus mengajukan pertanyaan yang tepat atau meneliti bagaimana daemon bekerja dan bagaimana menggunakan penguncian / semafor dan semacamnya untuk komunikasi antar proses (IPC).
Semoga berhasil.