Sorunu farklı bir perspektiften anlamaya yardımcı olabilir .. Diyelim ki Windows'a bir görev zamanlayıcısı eklemekle suçlanan programcı sizsiniz. Nasıl yapardın? Şunlara karşı çıkmanız gereken birkaç sorun var: Görev, oturum açmış kullanıcı dışında biri olarak çalıştırılırsa, oturum açmış kullanıcıyı herhangi bir hata açılır penceresi ile rahatsız etmeli misiniz? Görev yürütülürken oturum açmış bir kullanıcı yoksa ne olur? Bir GUI programı ile bir konsol programı arasındaki fark nedir? GUI'lerde stdin, stdout ve stderr yoktur; kavram onlar için anlamsızdır. COMMAND.COM/CMD.EXE içindeki veya dışındaki programlar ne olacak? Veya diğer kodlama motorları? Komut adında boşluk bulunan yollar ne olacak? Veya parametrelerde (seçenekler / argümanlar)? (Şimdi uğraşmaya çalışırken ..)
Bu durumda dahili veya tam teknik ayrıntılar hakkında% 100 emin olmasam da, cevaplar gibi görünüyor. Görevler, şu anda oturum açmış olan kullanıcıyla (varsa) etkileşime giremeyen yalıtılmış, etkileşimli olmayan bir oturumda çalıştırılır. ); Konsol çıkışı olmaması bekleniyor, çünkü etkileşimli olmadığı için, herhangi bir şekilde giriş yapan kullanıcıyı çıktıyı göstermek için kesemez, her nasılsa (ve çıktı varsa, stdin bitbucket / NULL, stdout ve stderr giriş yapar sistem kayıt tesisi); Boşluklar, sorun atlanarak işlenir: komut adı tam olarak alınır ve komuta iletilen parametreler, Görev özelliklerindeki başka bir giriş kutusunda belirtilir.
Tüm anlamı, görevin bir cini gibi sanki (Un * x dünyasında) yürütülmelidir. Her şey statik ve kesindir. Komut adı, parametresiz gerçek komut adıdır. Bu genellikle CMD.EXE gibi çalışan komut / komut yorumlayıcılarını içerir! Varsa parametreler başka bir yerde belirtilir ve görevi ayarlarken bilinmelidir (yani, "anında" değiştiremezsiniz). Ve bunun gibi.
Bu nedenle, parametreleri dahil etmek istiyorsanız, parametreleri belirtmek için parametreler bölümünü kullanmanız gerekir. Görev Zamanlayıcı yapar değilkomut satırı programlarının yaptığı gibi "komut" ve "args" olarak bölmek için komut adını ayrıştırmaya çalışın. Sadece büyük, tam bir komut adı gibi davranır. Benzer şekilde, BATCH dosyalarında% 1 ..% n kullanmak gibi değişken parametreler istiyorsanız, bunu Görev Zamanlayıcı'nın kendisinden yapamazsınız; Başka bir yol bulmalısın. (Programa iletilen ortam, görevin başlatıldığı ortama bağlı olduğundan, ortam değişkenlerini kullanamayacağınızı unutmayın. "Geçerli" ortam DEĞİL.) Parametreleri kaydetmek için geçici bir dosya kullanabilirsiniz, ancak Görev özelliklerinde statik bir dosya adı belirtmelidir; 5000 kullanıcılı bir ağda olduğunuzda ve dördü aynı görevi aynı anda çalıştırmayı denediğinde ne olur? Hepsi aynı anda aynı geçici dosyaya yazmaya çalışırken birbirlerini tıkayacak, muhtemelen istediğin de değil. (Bu soruna da çözümler var, ama bu soru ve cevap kapsamının çok dışına çıkıyor.)
Yani son cevap: Basit durumda - parametre olarak geçmek istediğiniz yol statiktir ve değişmez - parametreleri Program / Komut Dosyası kutusu yerine uygun Görev özelliğinde (Bağımsız Değişkenler) belirtmeniz gerekir veya bir toplu iş dosyası kullanın. Daha karmaşık bir durumda - cinlerin nasıl çalıştığını ve kilitleme / semaforların nasıl kullanılacağını ve süreçler arası iletişim (IPC) için doğru soruyu veya araştırmayı sormanız gerekir.
İyi şanslar.