Soru Pencere olmadan zamanlanmış bir görevde bir .bat dosyasını çalıştırın.


Çalıştırılan bir toplu iş komut dosyasını başlatan zamanlanmış bir görevim var. robocopy Her saat. Her seferinde bir pencere, masaüstüne robocopy'un çıktısı ile çıkıyor, ki bunu gerçekten görmek istemiyorum.

Programlanan işi çalıştırarak pencerenin en aza indirilmesini sağlamayı başardım

cmd /c start /min mybat.bat

ama bu bana her saat yeni bir komut penceresi veriyor. Buna şaşırdım cmd /c "Dize ile belirtilen komutu gerçekleştirir ve sonra sona erer" - Dokümanları yanlış anlamış olmalıyım.

Bir cmd penceresi açmadan bir toplu iş komut dosyası çalıştırmak için bir yolu var mı?


140
2018-05-17 09:00


Menşei


Bunu daha çok tercih edilen bir cevap buldum stackoverflow.com/questions/6568736/... - Efekt


Cevaplar:


Bunun yerine bir Windows Komut Dosyası dosyasını kullanarak sessizce çalıştırabilirsiniz. Çalıştırma Yöntemi, görünmez modda bir komut dosyası çalıştırmanıza izin verir. Oluşturmak .vbs bunun gibi dosya

Dim WinScriptHost
Set WinScriptHost = CreateObject("WScript.Shell")
WinScriptHost.Run Chr(34) & "C:\Scheduled Jobs\mybat.bat" & Chr(34), 0
Set WinScriptHost = Nothing

ve planlayın. Bu örnekteki ikinci argüman, pencere stilini ayarlar. 0 "pencereyi gizlemek" anlamına gelir.

Komple sözdizimi Çalıştırmak yöntemi:

 object.Run(strCommand, [intWindowStyle], [bWaitOnReturn])

Argümanlar:

  • nesne: WshShell nesnesi.
  • strCommand: Çalıştırmak istediğiniz komut satırını gösteren dize değeri. Yürütülebilir dosyaya geçirmek istediğiniz parametreleri eklemeniz gerekir.
  • intWindowStyle: İsteğe bağlı. Program penceresinin görünümünü gösteren tamsayı değeri. Tüm programların bu bilgileri kullanmadığını unutmayın.
  • bWaitOnReturn: İsteğe bağlı. Komut dosyasının, komut dosyanızdaki bir sonraki ifadeye devam etmeden önce programın yürütmeyi bitirmesini bekleyip beklememesi gerektiğini belirten Boolean değeri. True değerine ayarlanırsa, betiğin çalışması, program bitinceye kadar durdurulur ve Çalıştır, program tarafından döndürülen herhangi bir hata kodunu döndürür. False (varsayılan) olarak ayarlanırsa, Run yöntemi, programı başlattıktan hemen sonra döner ve otomatik olarak 0 döndürür (hata kodu olarak yorumlanmamalıdır).

142
2018-05-17 09:08



+1, tam olarak aynı şeyi yazdım - Sam Cogan
Onu silmeden önce gördüm. Sanırım ikimiz de botuz. ;-) - splattne
kullanıcı adı, Sam'in benden çok daha fazlasını hak ettiğini düşünüyorum. Ama yine de teşekkürler! Ve aynı cümlede ben ve Jon Skeet'den bahsetme. Bu küfür! ;-) - splattne
"Bir cmd penceresi açmadan bir toplu betiği çalıştırmak için bir yolu var mı?" Sorusuna, çok doğrudan bir cevap verir: Bir Windows Script dosyasını kullanarak çalıştırın. - Mark Meuer
@Lee Yolunuz boşluk içeriyorsa çift tırnak işareti gereklidir sanırım. - splattne


Bunu planlı bir görev olarak mı çalıştırıyorsunuz? Farklı bir kullanıcı hesabı olarak çalışacak şekilde ayarlanmışsa, oturum açmış olan kullanıcıya görünmez. Komut dosyası windows auth (dosya paylaşımları veya yazıcılar gibi) gerektiren öğelere ağ erişimi gerektirmiyorsa, bunu "nt yetki \ system" olarak çalıştırabilir ve parolayı boş bırakabilirsiniz. Windows 7'de, kullanıcıyı sadece SİSTEM'e ayarlayın ve Tamam'a basın.

(Muhtemelen robocopy kullanıyorsanız gerçek bir kullanıcı kullanmalısınız ...)

JR


56
2018-05-17 09:13



Teşekkürler - bu benim için daha az güçlüktü .vbs seçeneği. - mackenir
"Çalıştır" kullanıcısını SİSTEM'e (daha sonra NT AUTHORITY \ SYSTEM olarak değiştirdi) ayarladı ve benim için çalıştı. Zamanlanmış görevim çalıştığında artık popup CMD penceresini göremiyorum. Teşekkürler! - Ryan Stille
+1, bu zarif. Kullanıcı adı olarak "sistem" girdiğinizden emin olun, daha sonra win7 sizin için geri kalanını yapar. Internet'e ağ erişimi sağladığınızı unutmayın, sadece ağ paylaşımına ve pencereler için gerekli olan şeylere ağ yapmayın. - samsmith
Sistem kullanıcısı basit ve zarif, harika TIP! +1! - Matteo Conta
Görmek En Az Ayrıcalık İdari Modelleri Uygulamak. Bunun için Sistem hesabının kullanımı En Az Ayrıcalık politikalarının ihlali midir? Öyleyse yöneticiler bilmeli değil bunu çoğu durumda yapın. - user34660


Zamanlanmış Görev'i "Kullanıcının oturum açıp açmayacağını çalıştır" olarak yapılandırmanız yeterlidir.


28
2017-10-04 20:06



Mükemmel! Kimlik bilgisi depolamayı bile devre dışı bırakabilir ve daha sonra bu SİSTEM çalıştırmak zorunda kalmadan daha güvenli olur! - binki


Sen de deneyebilirsin CHP (Gizli süreç oluştur), düşündüğün gibi yapar mı?

CHP.EXE Instagram Hesabındaki Resim ve Videoları mybat.bat

Komut penceresi olmadan çalışır. Mükemmel! Aynı kişiler tarafından CMDOW olarak üretildi, ancak bu daha uygun.


17
2017-07-20 21:54



Görevi, oturum açmış kullanıcı bağlamında çalıştırmanız gerektiğinde mükemmel çalışır ("Tetikleyici: kullanıcı oturumuna bağlanma", "Görevi çalıştır: Kullanıcılar") - Sergei
Bu yerleşik bir araç değildir - Jonny Leeds


CMDOW komut satırından pencerelere birçok şey yapmanıza izin veren bir awsome aracıdır.

Yapılacak en basit şeylerden biri şu anki pencereyi (genellikle bat dosyasındaki ilk satır olarak) gizlemek:

cmdow @ /hid

veya yeni bir gizli işlem başlat

cmdow /run /hid mybat.bat 

9
2018-05-17 11:30



Hem bu hem de Rocketmonkeys önerisi, yeni araçları indirmeyi içerir, bu da çeşitli insanların masaüstleri üzerinde daha fazla uyumluluk anlamına gelir. Windows komutları kullanılarak pişirilenler çok daha iyi. - IanVaughan
Artı cmdow, bazı anti-virüs programları tarafından "tehlikeli" olarak algılanır ( değil tehlikeli, ancak cmdow dosyası karantinaya alınırsa, algılamanın kendisi bazı sorunlara yol açabilir ...). - Otiel
Hala pop-up konsolu var, sadece çok hızlı yanıp sönüyor. - Bamboo


İle komut dosyasını çağırmayı deneyin.

start /b <command>

5
2018-05-17 14:54



Bu çalışmaz, Zamanlanmış Görev-> Durum durumları "Başlamadı", şunu içerir: start / b C: \ file.bat: ve: start / b "C: \ file.bat": ancak: C: \ file.bat: sadece iyi çalışıyor. - IanVaughan
Çünkü start bir program değil, bir komuttur. Belirtmelisin cmd programın çalışması ve /c start /b <file> argüman olarak. Ancak, bu hala işe yaramayacaktır çünkü yine de bir konsol penceresi oluşturacaktır. cmd ve ekranda siyah bir pencere yanıp söner. - Synetech
Ayrıca @Synetech ile bunun yeni bir pencere oluşturmayacağını doğrulayabilir, ancak yine de başlatmak için bir konsol penceresinin açık olması gerekir. Bu gerçekten kullanışlı bir komuttur, ancak Zamanlanmış Görevler ile istenen şekilde kullanılamaz. - JonathanDavidArndt


Toplu iş dosyasına kısayol oluşturabilir, kısayolu en küçük duruma getirecek şekilde (kısayolun özelliklerinde, 'Kısayol' sekmesinde) ayarlayabilir ve ardından kısayolu başlatmak için işi ayarlayabilirsiniz.

Önemli: '' .Lnk 'uzantısıyla tamamlanmış Çalıştır metin alanına yazarak kestirme yolun yolunu elle belirtmeniz gerekir. sadece göz atmaya çalışırsanız, olacak yardımsever kısayolun işaret ettiği noktaya kendini yönlendir.


5
2017-08-11 16:49



Bu, Windows 10 x64'te çalışmaz, bu bir açılır pencereye "Bu dosyayı nasıl açmak istersiniz?" - Jan