Bir "komut penceresi" başlatmadan bir toplu iş dosyasını çalıştırmak nasıl? [çift]


131

Bu sorunun burada zaten bir cevabı var:

Windows XP'de, bir "siyah pencere" olmadan bir kısayol üzerinden bir toplu iş (.bat veya .cmd) dosyasını çalıştırabilir miyim?


6
Bir yarasa dosyası çalıştırırken komut penceresinin görünmesini engelleyip engellemeyeceğinizi mi soruyorsunuz?
Eric

6
Evet, cmd.exe kısayolundaki Özellikler'i kullanarak çıkış penceresinin varsayılan rengini kolayca değiştirebilirsiniz. (evet bu bir şaka ...)
Toby J

Yanıtlar:


86

Örneğin, "testing.bat" ı toplu iş dosyanızın adıyla değiştirdikten sonra, hidecmd.vbs dosyasını wscript olarak kaydedin.

Set oShell = CreateObject ("Wscript.Shell") 
Dim strArgs
strArgs = "cmd /c testing.bat"
oShell.Run strArgs, 0, false

İkinci parametre oShell.Runolan intWindowStyleprogramın pencere ve sıfır değerine görünümünü gösteren değeri gizli pencere içindir.

Referans burada http://msdn.microsoft.com/en-us/library/d5fk67ky.aspx


Üçüncü satır şöyle olur: strArgs = "cmd / c FILEPATH \ testing.bat"?
Dan Z

1
Hala görünmez kalırken yarasa yükseltilmiş modda çalıştırmanın bir yolu var mı?
Laurens Swart

.batBu yöntemi kullanarak dosyayı administartor olarak nasıl çalıştırabilirim ?
Mehdi Dehghani

44

Bu sadece Shaji'nin cevabının basitleştirilmesidir. Toplu iş komut dosyanızı aşağıdaki gibi bir VBScript (.vbs) komut dosyasıyla çalıştırabilirsiniz :

'HideBat.vbs
CreateObject("Wscript.Shell").Run "your_batch_file.bat", 0, True

Bu toplu iş dosyanızı hiçbir komut penceresi gösterilmeden yürütecektir.


.batBu yöntemi kullanarak dosya yönetici olarak nasıl çalıştırılır ?
Mehdi Dehghani

@MehdiDehghani özellikler> güvenlik> admin olarak çalıştır. Bu sadece exe veya uygulamalar için işe yararsa, o zaman oh kuyu.
Taylor Spark

21

Yalnızca "Windows Komut Dosyası Kullan" yanıtlarını genişletmek için (zaten yerleşik olduğundan en iyi olduğunu düşündüğüm) yanıtlarını tek bir sarmalayıcı komut dosyası kullanarak ve "gerçek" toplu iş dosyasının adını bir parametre olarak geçirerek yapabilirsiniz. Ek parametreler toplu iş dosyasına geçirilir.

If WScript.Arguments.Count >= 1 Then
    ReDim arr(WScript.Arguments.Count-1)
    For i = 0 To WScript.Arguments.Count-1
        Arg = WScript.Arguments(i)
        If InStr(Arg, " ") > 0 Then Arg = """" & Arg & """"
      arr(i) = Arg
    Next

    RunCmd = Join(arr)
    CreateObject("Wscript.Shell").Run RunCmd, 0, True
End If

Öyleyse, örneğin yukarıdaki dosyayı bir NoShell.vbsyere kaydedin, sonra arayın:

NoShell.vbs c:\foo\my_batch_file.bat

Son olarak, bunu .vbs dosyasını (Visual Studio'daki bir "Dış Araçlar" gibi) anlamayan bir yerden çalıştırmak istiyorsanız C:\Windows\System32\wscript.exe, vbs dosyasıyla ilk parametresi olarak çağırmak isteyeceksiniz ve ikinci olarak toplu iş dosyası.


6
Yarattığı her yeni yarasa dosyası için yeni bir vbs dosyası oluşturma zorunluluğu fikrinden ve kavramından hoşlanmayanlar için, ilk iki yanıttan birini kullanması gerektiğinden, bu mükemmel bir çözümdür. Birden fazla vbs dosyası yerine, birden çok kısayol olacaktır. Her yeni yarasa dosyası için vbs dosyasının kısayolunu oluşturun, üstüne sağ tıklayın, özellikler> Kısayollar sekmesini seçin ve Hedef kutusunda ya da yukarıda gösterildiği gibi ya da yoldaki yarasa dosyasının yolunu girin vbs dosyası olarak bu eğer kısayol aynı yerde değil: "C:\My Files\HideCmd.vbs" c:\foo\my_batch_file.bat.
Rolo,

Yarasa dosyasının dosya yolu bir boşluk içeriyorsa, vbs dosyasına giden bir kısayol ile nasıl çağrılabilir? Örneğin: "C:\My Files\HideCmd.vbs" c:\my things\my_batch_file.bat. Yol için ne denersem deneyeyim - her şey etrafında çift tırnak, boşluğun% 20'si veya bu ikisinin bir kombinasyonu, hiçbir şey işe yaramaz. Bana dosyanın bulunamadığını ya da hiçbir şey olmadığını söyleyen bir hata mesajı alıyorum. Bu benim tarafımdaki kullanıcı hatası, kısayollar için Hedef alanıyla ilgili bir Windows sınırlaması ya da boşluklu dosya yollarını düzgün işlememesi gereken vbs komut dosyasındaki bir sorun mu?
Rolo,

@Rolo Komut dosyasını güncelledim, böylece gelen parametrelerden herhangi birinin boşlukları varsa, bunları tırnak işaretleri içine alır. Böylece, toplu iş dosyasına giden yolu tırnaklı olarak çağırmak isteyeceksiniz, o zaman tek bir argüman olarak kabul edilecek ve çağrılmadan önce yeniden saracaksınız.
Toby J

9

Küçültülmüş çalıştırmak için kısayolun özelliklerini değiştirebilirsiniz.

Tamamen görünmez bir şekilde çalıştırmak için Windows Scripting gibi başka bir şeye ihtiyacınız olacak.


1
İlk önerin her zaman yaptığım gibi.
martineau

8

'/ B' seçeneğiyle başla kullanın . Örneğin:

@echo off
start /B go.bat

25
start /bprogramı, yeni bir program oluşturmak yerine, şu anda atanmış olan konsolda çalıştıracaktır. Partinin cmd ile çalışması gerektiğinden zaten yeni bir tane alacaksınız (ki bu da [sürpriz] bir konsolu açar).
Joey

@Joey evet, ancak bu, kabuk yürütme yoluyla ( SYSTEMC / C ++ 'da olduğu gibi) toplu iş dosyalarını diğer uygulamalardan başlatmak için çok kullanışlıdır .
Tomáš Zato

1
@ TomášZato: Toplu dosyayı doğrudan bu durumda çağırabilir veya bir süreci oluşturmak için ne kullanırsanız kullanın, önce bir kabuk yaratmazsanız, kullanın cmd /c foo.cmd. startBu senaryolarda kesinlikle kullanmaya gerek yok ve bunun systemlehine kullanılmaması gerektiğini savunuyorum CreateProcess. Bir toplu iş dosyası başlatarak, zaten bir platforma bağımlısınızdır, ayrıca iş için daha iyi araçları kullanabilirsiniz.
Joey

@Joey Bir demet teşekkürler, daha cmd /cönce hiç duymadım . Cmd komutu, benim durumumda gerekli olan şeydi, fakat şimdiye kadar bulduğum tüm
stackexchange

start /b go.bat Yeni bir konsol tahsis etmeyecektir (örneğin, conhost.exe örneği - veya Windows 7'den önce csrss.exe'deki bir konu). Ancak toplu iş komut dosyası aynı konsola eklenen yeni bir cmd.exe örneği ile çalıştırıldığından dolayı karışıklık yaratacaktır . Kabuğun her iki örneği de, genellikle alternatif olarak konsoldan girdi okumak için rekabet edecektir. Bu ihtiyacı /w(örneğin start /b /w go.batkullanmaya benzer ikinci örnekte, beklemek sırayla) cmd /ckullanılıyorsa system. Ayrıca, arıyorsanız CreateProcess, go.batdoğrudan çalıştırın . Buna gerek yok cmd /c.
Eryk Sun

6

Ücretsiz GPL açık kaynak "Gizli İşlem Oluştur"

http://www.commandline.co.uk/chp/

Microsoft Security Essentials ve muhtemelen diğer birçok virüs / kötü amaçlı yazılım tarayıcıları, chp.exe dosyasını çalıştırılabilir, virüs olarak görür, çünkü virüslerin yaptığı gibi, bir pencereyi veya görev çubuğu düğmesini göstererek belirlediğiniz programı gizler.

Bu bir virüs değil. Örneğin hedef işlemin görev yöneticisinde görünmesini engellemez. Ve tabii ki kaynak kodu dahil edilmiştir, böylece çok küçük olduğunu ve hiçbir şey yapmadan başka bir program yapmadan çalıştığını görebilirsiniz.

Dahil edilen chp.exe dosyasının gerçekten o kaynaktan oluşturulduğuna güvenmenize gerek yok. Dahil chp.exe atın ve kaynağından kendi derlemek ve bunu yapmak için gerekli tüm araçları bile ücretsiz ve indirilebilir.


Ayrıca sadece .bat veya .cmd dosyasına bir kısayol oluşturabilir, ardından kısayolu sağ tıklatın, Özellikler, Kısayol sekmesi, Çalıştır: Küçültülmüş. Sonra zamanlanmış görevlerde doğrudan .bat / .cmd dosyası yerine kısayolu kullanın. Bu, bir pencerenin açılmasını engeller, ancak bir görev çubuğu düğmesi görünmeye devam eder.


6

AutoIt gibi pencere komut dosyası kullanabilirsiniz .

Örnek olarak, bunu AutoIt script editörüne yazmanız yeterlidir. Oldukça basit

Run("C:\test\batchfile.bat", "", @SW_HIDE)

Bir döngü içinde çalıştırmak istiyorsanız,

$x=0
Do
 Run("C:\test\batchfile.bat", "", @SW_HIDE)
 Sleep(5000)
Until $x = 1

.Exe olarak derleyin - ve bitirdiniz.


Aynı şekilde, AutoHotkey'de :

#NoTrayIcon ; To prevent momentary icon pop-up
run whatever.bat arg1 arg2,,hide 

5

Gizli Başlat'ı kullanın (20 YTL'dir)

Gizli Başlat - Konsol Penceresi veya UAC İstemi Olmadan Uygulamaları ve Toplu Dosyaları Çalıştır

Konsol uygulamaları ve toplu iş dosyaları düzenli olarak Windows başlangıcında veya bir zamanlamayla çalıştırılır. Bunun asıl sakıncası, her uygulamanın ekranda titreyen bir konsol penceresi açmasıdır. Gizli Başlat (veya Hstart), konsol uygulamalarını ve toplu iş dosyalarını arka planda herhangi bir pencere olmadan çalıştırmanıza, Windows 7 ve Vista'da UAC ayrıcalık yükseltmesini ele almanıza, paralel veya eşzamanlı olarak birden fazla komut başlatmanıza ve daha pek çok şeye olanak sağlayan hafif bir komut satırı yardımcı programıdır .

görüntü tanımını buraya girin


Bu çok güzel tasarlanmış ve kullanışlı bir uygulamadır.
Guru Josh,

5

Ekstra program kullanmadan basit bir çözüm.

  1. Çalıştırmak ve test etmek istediğiniz toplu iş dosyasını oluşturun.
  2. Bunun için bir kısayol oluşturun.
  3. Kısayolun özelliklerini düzenleyin: Kısayol sekmesinde, Minimize Edilmiş Çalıştır'ı seçin. Bir kısayol tuşu atayın ve bitirdiniz!

İyi şanslar!


7
OP'nin sorunu için bir çözüm değil. Küçültme ile Gizleme
nixda

Doğru simgeyi kullanmak için kısayolu değiştirirseniz, görev çubuğundaki simge durumuna küçültülmüş sıçrama aslında bir şeyin başladığını hatırlatır.
Her kim

Bu benim sorunum için güzel ve temiz bir çözüm ! Teşekkür ederim!
dmitry_romanov

küçültme ... hehe.
Gumuruh
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.