Mam zaplanowane zadanie, które uruchamia skrypt wsadowy uruchamiany robocopy
co godzinę. Za każdym razem, gdy się uruchamia, na pulpicie pojawia się okno z wyjściem robocopy, czego tak naprawdę nie chcę widzieć.
Udało mi się zminimalizować okno, uruchamiając zaplanowane zadanie
cmd /c start /min mybat.bat
ale to daje mi nowe okno poleceń co godzinę. Byłem tym zaskoczony, biorąc pod uwagę: cmd /c
„Wykonuje polecenie określone przez ciąg znaków, a następnie kończy działanie” - musiałem źle zrozumieć dokumenty.
Czy istnieje sposób na uruchomienie skryptu wsadowego bez wyskakiwania okna cmd?
Odpowiedzi:
Zamiast tego możesz uruchomić go w trybie cichym, używając pliku skryptu systemu Windows. Metoda Run pozwala na uruchomienie skryptu w trybie niewidocznym. Utwórz
.vbs
plik taki jak teni zaplanuj to. Drugi argument w tym przykładzie ustawia styl okna. 0 oznacza „ukryj okno”.
Pełna składnia metody Run :
Argumenty:
źródło
Czy wykonujesz to jako zaplanowane zadanie? Jeśli tak, ustaw go tak, aby działał jako inne konto użytkownika, wtedy nie będzie widoczny dla zalogowanego użytkownika. Jeśli skrypt nie potrzebuje dostępu do sieci do elementów wymagających uwierzytelniania systemu Windows (takich jak udziały plików lub drukarki), możesz go uruchomić jako „nt organ \ system” i pozostawić hasło puste. W systemie Windows 7 po prostu ustaw użytkownika na SYSTEM i naciśnij OK.
(Prawdopodobnie musisz użyć prawdziwego użytkownika, jeśli używasz robocopy ...)
JR
źródło
Po prostu skonfiguruj Zaplanowane zadanie jako „Uruchom bez względu na to, czy użytkownik jest zalogowany”.
źródło
Możesz także spróbować CHP (Utwórz ukryty proces) , robi dokładnie to, co myślisz ...
Działa bez okna poleceń. Doskonały! Wykonane przez te same osoby co CMDOW, ale jest to bardziej odpowiednie.
źródło
CMDOW to niesamowite narzędzie, które pozwala wykonywać wiele, wiele rzeczy do okien z poziomu wiersza poleceń.
Jedną z najprostszych rzeczy jest ukrycie bieżącego okna (zwykle jako pierwszej linii w pliku nietoperza) za pomocą:
lub rozpocznij nowy ukryty proces za pomocą
źródło
Spróbuj wywołać skrypt za pomocą
źródło
start
nie jest programem, jest to polecenie. Musisz określićcmd
jako program do uruchomienia i/c start /b <file>
jako argument. Jednak to nadal nie zadziała, ponieważ nadal utworzy okno konsolicmd
i flashuje czarne okno na ekranie.Możesz utworzyć skrót do pliku wsadowego, ustawić skrót, aby zaczął być zminimalizowany (we właściwościach skrótu, karta „Skrót”), a następnie ustawić zadanie, aby rozpocząć skrót.
Ważne : musisz ręcznie określić ścieżkę do skrótu, wpisując go w polu tekstowym Uruchom wraz z rozszerzeniem „.lnk”; jeśli po prostu spróbujesz do niego przejść, pomocne będzie przekierowanie do tego, na co wskazuje skrót.
źródło
Zdaję sobie sprawę, że na to pytanie już udzielono odpowiedzi w doskonałej rozdzielczości, która jest natywna dla systemu Windows i dlatego powinna być jak najbardziej kompatybilna, i zgadzam się całkowicie.
Chciałem również powiedzieć, że nie zgadzam się z komentarzem @ splattne (ale nie z jego faktyczną odpowiedzią) - że rezolucja w innym odnośnym wątku zasługuje na uznanie. Ta odpowiedź polega na uruchomieniu skryptu jako innego użytkownika (SYSTEM), co jest prawie równoważne z udzieleniem skryptu dostępu do katalogu głównego. Nie powiedzie się również w przypadku zadań takich jak
ROBOCOPY
(o których wspomina John Rennie), które wymagają dostępu do sieci.Nigdy wcześniej nie próbowałem
CMDOW
, ale chciałbym zaoferować inną podobną rozdzielczość, która [chociaż nie jest instalowana natywnie w systemie Windows] jest nadal wysoce przenośna dla większości wersji i jest dostępna zarówno w wersjach 32-bitowych, jak i 64-bitowych, i to jest NirCmd .NirCmd to bardzo potężne narzędzie, które ma mnóstwo opcji, z których najbardziej użyteczną, osobiście uważam, że jest w stanie uruchomić ukryte okna poleceń, wykonując po prostu następujące czynności:
Z
exec
sekcji Opis poleceń NirCmd :Uruchamia aplikację i opcjonalnie określa jeden lub więcej parametrów wiersza polecenia dla wykonanej aplikacji. Parametr [pokaż / ukryj / min / maks.] Określa, czy uruchomiona aplikacja będzie widoczna, czy nie. Jeśli określono opcję „ukryj”, uruchomiona aplikacja nie będzie widoczna dla użytkownika. Jeśli podano „maks.”, Okno uruchomionej aplikacji zostanie zmaksymalizowane. Jeśli podano „min”, okno uruchomionej aplikacji zostanie zminimalizowane.
EDYCJA: Próbowałem uruchomić
ROBOCOPY
zadanie i wypróbowałem metodę z tej odpowiedzi, i to nie zadziałało, nawet po edycji uprawnień dostępu do sieci. Próbowałem dwukrotnie kliknąć skrypt i nie mogłem go uruchomić, ale mogłem go uruchomić tylko z poziomu wiersza polecenia z podwyższonym poziomem uprawnień. Utworzyłem skrót do pliku wsadowego i uruchomiłem go jako Administrator i mogłem go uruchomić, klikając go dwukrotnie, ale metodą, którą skończyłem, było uruchomienie go ukrytego jako SYSTEM (wiem, wiem) - ale działa z tymROBOCOPY
, co jest warte, o ile plik wsadowy ma odpowiednie uprawnienia.EDYCJA 2: Z jakiegoś powodu nie działałoby to jako SYSTEM (prawdopodobnie wspomniano wcześniej o dostępie do sieci) - zauważyłem to dopiero po uruchomieniu
ROBOCOPY
bez flagi / L, co jest w zasadzie tylko symulacją i [najwyraźniej] nie działa faktycznie łączę się ze zdalnym systemem, ale kiedy uruchamiam plik wsadowy z najwyższymi uprawnieniami i zaznaczam ukryte pole, i nadal mogę uruchomić go jako zalogowany użytkownik w tle bez okna poleceń, bez względu na to, co jest to warte dla każdego .źródło
Innym rozwiązaniem, z którego skorzystałem, jest Hidden Start
źródło
Spróbuj wprowadzić polecenie zakończenia na końcu pliku wsadowego. Powinno to zamknąć okno poleceń po zakończeniu skryptu.
źródło
Aby ukryć dane wyjściowe (choć nie okno), dodaj to na początku pliku wsadowego:
źródło