Jak uruchomić zadanie zaplanowane bez okien

2

Mam następujące polecenie działające jako zaplanowane zadanie w systemie Windows 8

cmd /C copy /Y nul B:\keepalive.txt

Jednak po uruchomieniu otwiera okno wiersza polecenia na ułamek sekundy, a to wystarczy, aby było to denerwujące.

Jak mogę uruchomić to samo polecenie, ale bez otwierania okien wiersza polecenia?

TheBlueSky
źródło
1
Zwiń kod w skrypcie VBS i skieruj swoje zadanie do tego pliku. Skrypty VBS mogą uruchamiać polecenia CMD w ukrytym oknie. Czytać ta odpowiedź aby zobaczyć, jak to działa. Pamiętaj: w twoim przypadku możesz umieścić polecenie CMD copy /Y nul B:\keepalive.txt bezpośrednio do tego VBS i żaden dodatkowy plik CMD nie jest potrzebny, tak jak to wyjaśniłem. Obecnie w pracy nie mogę napisać pełnej odpowiedzi, mam nadzieję, że wpadniesz na pomysł.
nixda
@nixda, dlaczego Twój doskonały komentarz nie jest publikowany jako odpowiedź?
Dave
@nixda, to nie działa tak, jak reklamowano :) jako dwa problemy, z którymi miałem do czynienia, próbowałem zrobić to. Pierwszy, co nie jest wielkim problemem, kiedy użyłem polecenia copy /Y nul B:\keepalive.txt w pliku VBS zwraca błąd, coś takiego jak skrypt nie może złożyć określonego pliku, więc umieściłem cały cmd /C copy /Y nul B:\keepalive.txt dowództwo. Drugi problem, zaplanowane zadanie nie może uruchomić plików VBS i zawsze wyświetla „Jak chcesz otworzyć ten plik?” dialog. Jak już wcześniej wspomniałem, pracuję w systemie Windows 8 i klikam dwukrotnie plik Prace ; tj. plik jest wykonywany.
TheBlueSky

Odpowiedzi:

2

Zawiń swój kod w Skrypt VBS i skieruj swoje zadanie do tego pliku

VBscript metoda run może wykonywać polecenia wsadowe w ukrytym oknie, jeśli ustawisz „intWindowStyle” na 0.

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

Umieść ten kod w swoim HiddenTask.vbs plik.

Set wShell = CreateObject ("Wscript.Shell") 
wShell.Run "cmd /c copy /Y nul D:\keepalive.txt", 0

Z powodzeniem przetestowałem Twój przykład. Tworzy nowy pusty plik, tak jak powinien. Oczywiście bez wyświetlania żadnego okna.


Czytać to pytanie TAK jeśli chodzi o Twój problem, który nie działa, gdy jest używany jako zaplanowane zadanie. Nadaj uprawnienia administratora zadania i ustaw folder „start w”. Sprawdź także dziennik zdarzeń dla tego zadania.

Dodatkowo zrobiłem kilka zrzutów ekranu. Może jesteś w stanie znaleźć różnicę w konfiguracji.

enter image description here enter image description here enter image description here

WAŻNY Jeśli napotkasz problem po wykonaniu poniższych instrukcji, przeczytaj poniższe komentarze, problemem może być nazwa pliku lub ścieżka.

nixda
źródło
Dziękujemy za szczegółową odpowiedź. Właśnie to już zrobiłem, a moim problemem jest „Jak chcesz otworzyć ten plik?” okno dialogowe wyświetlane zamiast uruchomionego skryptu. Nie jest to problem z uprawnieniami (używam go pod moim użytkownikiem), a wspomniane pytanie Stackoverflow nie mówi nic o „Jak chcesz otworzyć ten plik?”
TheBlueSky
przetestowałeś ustawienie folderu „start w”, takie jak wspomniałeś tutaj? .
nixda
przepraszam za późną odpowiedź. Tak, próbowałem „Start in”, w wyniku czego zadanie nawet „nie widzi” pliku skryptu, tak jakby „Start in” nie miało żadnego efektu. Aby to powtórzyć, zadanie oczywiście dociera do pliku, jednak nie może go uruchomić tak, jakby zostało kliknięte dwukrotnie.
TheBlueSky
Wiesz, co jest jeszcze bardziej frustrujące, wszystko to polega na tym, że zadania harmonogramu nie lubią spacji na ścieżce, nawet jeśli użyłem do tego cudzysłowu (w rzeczywistości cudzysłów powoduje, że bieg nie powiedzie się); nie lubi też niczego innego niż litery i cyfry. Kiedy przeniosłem skrypt na ścieżkę bez miejsca, zadziałało. Kto to był głupi pomysł? Gdzie umieszczam moje pliki i jak je nazywam, to nie twoja sprawa, Microsoft.
TheBlueSky