Jak uruchomić plik wsadowy bez uruchamiania "okna poleceń"?
W Windows XP, czy mogę uruchomić plik wsadowy (.bat lub .cmd), poprzez skrót, bez “czarnego okna”?
W Windows XP, czy mogę uruchomić plik wsadowy (.bat lub .cmd), poprzez skrót, bez “czarnego okna”?
Zapisz jako wscript, na przykład hidecmd.vbs po zastąpieniu “testing.bat” nazwą pliku wsadowego.
Set oShell = CreateObject ("Wscript.Shell")
Dim strArgs
strArgs = "cmd /c testing.bat"
oShell.Run strArgs, 0, false
Drugim parametrem oShell.Run
jest wartość intWindowStyle
wskazująca na wygląd okna programu, a wartość zero jest dla okna ukrytego.
Odniesienie jest tutaj http://msdn.microsoft.com/en-us/library/d5fk67ky.aspx
To tylko uproszczenie odpowiedzi Shajiego. Możesz uruchomić skrypt wsadowy za pomocą VBScript (.vbs) w następujący sposób:
'HideBat.vbs
CreateObject("Wscript.Shell").Run "your_batch_file.bat", 0, True
To spowoduje wykonanie pliku wsadowego bez wyświetlania okna poleceń.
Aby rozwinąć odpowiedzi “Use Windows Scripting” (które uważam za najlepsze, ponieważ są już wbudowane), oto jak to zrobić za pomocą jednego skryptu wrapper i podając jako parametr nazwę “prawdziwego” pliku wsadowego. Dodatkowe parametry zostaną przekazane do pliku wsadowego.
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
Więc np. zapisz powyższy plik jako NoShell.vbs
, a następnie wywołaj:
NoShell.vbs c:\foo\my_batch_file.bat
Na koniec, jeśli chcesz to uruchomić z miejsca, które nie rozumie pliku .vbs (np. “External Tools” w Visual Studio), będziesz chciał wywołać C:\Windows\System32\wscript.exe
z plikiem vbs jako pierwszym parametrem i Twoim plikiem wsadowym jako drugim.
Free GPL open source “Create Hidden Process” http://www.commandline.co.uk/chp/
Microsoft Security Essentials, and probably most other virus/malware scanners will treat the executable, chp.exe, as a virus because it hides whatever program you specify from displaying a window or a task bar button, just like viruses do.
It’s not a virus. Nie ukrywa procesu docelowego przed pojawieniem się np. w menedżerze zadań. I oczywiście kod źródłowy jest dołączony, więc widzisz, że jest bardzo mały i nie robi nic poza uruchomieniem dowolnego programu, który mu podasz.
Nie musisz nawet ufać, że dołączony chp.exe naprawdę został zbudowany z tego źródła. Możesz wyrzucić dołączony chp.exe i skompilować swój własny program ze źródła, a wszystkie potrzebne do tego narzędzia są nawet darmowe i do pobrania.
Możesz również po prostu zrobić skrót do pliku .bat lub .cmd, a następnie kliknąć prawym przyciskiem myszy na skrót, Właściwości, Zakładka Skrót, Uruchom: Zminimalizowany. Następnie w zaplanowanych zadaniach, użyj skrótu zamiast pliku .bat/.cmd bezpośrednio. Zapobiegnie to wyskakiwaniu okna, ale przycisk paska zadań nadal będzie się pojawiać.
Można użyć skryptów okiennych takich jak AutoIt .
Jako przykład, wystarczy napisać to do edytora skryptów AutoIt. Jest to dość proste
Run("C:\test\batchfile.bat", "", @SW_HIDE)
Jeśli chcesz uruchomić go w pętli,
$x=0
Do
Run("C:\test\batchfile.bat", "", @SW_HIDE)
Sleep(5000)
Until $x = 1
Skompiluj go jako .exe - i gotowe.
Podobnie w AutoHotkey :
#NoTrayIcon ; To prevent momentary icon pop-up
run whatever.bat arg1 arg2,,hide
Proste rozwiązanie, bez użycia dodatkowych programów.
Powodzenia!
Use Hidden Start (costs $20)
Hidden Start - Run Applications and Batch Files without a Console Window or UAC Prompt
Console applications and batch files are regularly run at Windows startup or in a schedule. Główną niedogodnością jest to, że każda aplikacja otwiera okno konsoli, które migocze na ekranie. Hidden Start (lub Hstart) to lekkie narzędzie wiersza poleceń, które pozwala na uruchamianie aplikacji konsolowych i plików wsadowych bez żadnego okna w tle, obsługę podwyższania uprawnień UAC w systemie Windows 7 i Vista, uruchamianie wielu poleceń równolegle lub synchronicznie i wiele innych.