Uruchom plik wsadowy za pomocą harmonogramu zadań systemu Windows

155

Mam plik wsadowy daily.bat, to jest kod:

cd C:\inetpub\wwwroot\infoweb\factuur\cron
c:\PHP\php.exe -f ./cron_pdf.php
ftp -s:ftp_upload.txt ftp.site.be

I utworzyłem zadanie z harmonogramem zadań w systemie Windows 7. Kiedy uruchamiam partię ręcznie, wszystko idzie dobrze, ale kiedy próbuję uruchomić ją za pomocą harmonogramu zadań, nic się nie dzieje.

Moje działanie jest

'run script' "C:\inetpub\wwwroot\site\x\cron\daily.bat"

UAC jest wyłączone, a ja jestem administratorem.

Masz jakiś pomysł, dlaczego to nie działa?

Ruben
źródło
Nie jestem pewien, czy to pytanie jest poza tematem, ale możesz uzyskać lepsze odpowiedzi na serverfault.com .
Hans Olsson
Dzięki, spróbuję również opublikować to na serverfault
Ruben,
to też może być przydatne: serverfault.com/questions/734035/ ...
Ruben

Odpowiedzi:

286

Napotkałem ten sam problem, ale znalazłem inne rozwiązanie bez konieczności modyfikowania mojego skryptu wsadowego.

Jedyne, czego mi brakowało, to ustawienia „Akcji” - opcja „Rozpocznij w (opcjonalnie)”.

Przejdź do właściwości zadania -> zakładka Akcja -> Edytuj -> Wypełnij jak poniżej:

  1. Akcja : Uruchom program
  2. Program / skrypt : ścieżka do twojego skryptu wsadowego npC:\Users\beruk\bodo.bat
  3. Dodaj argumenty (opcjonalnie) : <jeśli to konieczne - w zależności od skryptu>
  4. Rozpocznij za (opcjonalnie) : Umieść pełną ścieżkę do lokalizacji skryptu wsadowego, np. C:\Users\beruk\(Nie umieszczaj cudzysłowów wokół Rozpocznij w)

Następnie kliknij OK

Mi to pasuje. Powodzenia!

Ghazi
źródło
8
Zdaję sobie sprawę, że oryginalny post jest dość stary. Ale ten post był jednym z najpopularniejszych linków w wyszukiwarce Google, kiedy próbowałem rozwiązać ten problem. Więc myślę, że chciałbym podzielić się odkryciami. Na wszelki wypadek, ktoś, łącznie ze mną, o tym zapomina.
Ghazi
4
Wydaje mi się, że nie potrzebujesz wartości „Rozpocznij w (opcjonalnie)” - jestem w stanie uruchomić prosty, samodzielny plik .bat bez niej. Dziękuję jednak za jasne kroki - bardzo pomocne dla tych, którzy szukają prostego przejścia!
DCaugs,
23
@DCaugs, Bez Start Inzestawu parametrów mój zaplanowany plik wsadowy w ogóle nie działałby. (Windows 7)
Justin Skiles
2
To rozwiązanie nie zadziałało. Odpowiedź udzielona przez @Arun Raja zadziałała dobrze.
Cagy79,
7
@DCaugs To Start injest główny powód, dla którego to zadziałało.
Gustavo
54

Żadna z powyższych metod nie zadziałała. Wypróbowałem to w ten sposób, jak powiedziałem w samouczku i zadziałało.

Akcja:

Start a program 

Program / scenariusz:

cmd

Dodaj argumenty:

/c start "" "E:\Django-1.4.1\setup.bat"

Pracował dla mnie na Win7 Pro. Musisz mieć konto z hasłem (puste hasła nie są dobre)

Arun Raja
źródło
1
Zgadzam się! żadne z poprzednich rozwiązań nie działało dla mnie w systemie Windows Server 2008. Ta odpowiedź załatwiła sprawę! Dzięki.
Cagy79,
Chciałabym dać ci +2000. Przez cały dzień próbowałem różnych podejść i nic nie działało dobrze poza twoim rozwiązaniem. Musiałem uruchomić plik wsadowy, który z kolei uruchamia kolejny plik wsadowy 10 razy z różnymi parametrami. Z konsoli wszystko działało dobrze, ale Harmonogram zadań odmówił otwarcia więcej niż 4 procesów w tym samym czasie. To było dziwne ... Dzięki twojej technice wszystkie 10 procesów zostało uruchomionych.
Icarus,
Ta metoda zadziałała dla mnie. Jednak w programie planującym, na karcie Historia, zadanie kończy się natychmiast z sukcesem, ponieważ zadanie to cmd, a nie uruchamiany przez nie plik .bat. Ponieważ plik bat, czyli operacja tworzenia kopii zapasowej, kończy się za 2-3 godziny, nie mam pojęcia o jego stanie.
azzurroverde
Musisz zachować powiadomienie pocztą na końcu zakończenia pliku bat, aby powiadomić o jego statusie. to w jedną stronę.
Arun Raja
To zadziałało w połączeniu ze wskazówką, że powinien być ustawiony do uruchamiania w określonym katalogu, jak wspomniano w zaakceptowanej odpowiedzi @ Ghazi, upewniając się, że wybrano również opcję „uruchom z najwyższymi uprawnieniami”.
mheavers
43

Dla tych, których pliki bat nadal nie działają w Harmonogramie zadań systemu Windows 8+, jedną rzecz chciałbym dodać do odpowiedzi Ghazi - po wielu cierpieniach:

1) W obszarze Akcje wybierz „Utwórz zadanie BASIC ”, a nie „Utwórz zadanie”

To zrobiło to dla mnie, plus inne kwestie, o których nie można zapomnieć:

  1. Użyj ścieżki Rozpocznij w do pliku wsadowego, nawet jeśli jest opcjonalna
  2. w razie potrzeby użyj cudzysłowów w polu Uruchom program> wpis programu / skryptu, np. „C: \ moje skrypty \ runme.bat” ...
  3. ALE NIE używaj cudzysłowów w polu Rozpocznij w. (Szalone, ale prawdziwe!)

To działało bez konieczności uruchamiania wiersza polecenia.

(Przepraszam, że moja reprezentacja jest zbyt niska, aby dodać moją wskazówkę dotyczącą podstawowego zadania do komentarzy Ghazi)

micstr
źródło
21

Upewnij się, że „Rozpocznij” NIE MA CYTATÓW.

Jonathan
źródło
7

Już działa. To właśnie zrobiłem. Prawdopodobnie nie będziesz potrzebować wszystkich tych kroków, aby to zadziałało, ale upewnij się, że wypróbuj je wszystkie:

  • Sprawdź parametry konta zaplanowanego zadania i upewnij się, że są ustawione tak, aby uruchamiały się niezależnie od tego, czy ktoś jest zalogowany na komputerze, czy nie

  • check działa z większością uprawnień / praw

  • Upewnij się, że najpierw udałeś się do pełnej ścieżki: cd C: \ inetpub \ wwwroot \ infoweb \ factuur \ cron

  • Nie używaj podwójnych cudzysłowów w plikach wsadowych (nie wiem dlaczego, ale wydaje się, że pomaga)

  • Bądź superadministratorem, wpisz „Net user administrator / active: yes” w wierszu poleceń, wyloguj się i zaloguj jako superadministrator, więc UAC jest wyłączone

Ruben
źródło
2
Przykro mi to mówić, ale jest to bardzo źle napisana odpowiedź. Upewnię się, że właściwa odpowiedź zostanie wybrana jako zaakceptowana.
jwize
5

Upewnij się, że „Rozpocznij w” NIE kończy się znakiem BACKSLASH.

Michael Kehoe
źródło
1
Czy mógłbyś wyjaśnić, jakiej wersji systemu operacyjnego lub typu zadania dotyczą te informacje? Zaakceptowana odpowiedź zawiera \, więc musi działać na niektórych systemach - gdzie to nie działa?
lessthanideal
Naprawiono zaplanowane dla mnie zadanie „foo.cmd” w systemie Windows Server 2012. Gdy „Rozpocznij w” ustawiono na „C: \ Foo \”, zadanie zakończyło się niepowodzeniem z błędem kodu zakończenia 0x8007001, ale „Rozpocznij w” ustawionym na „C : \ Foo 'zadanie przebiegło poprawnie.
Aaron
5

Wystąpił problem polegający na tym, że moje zadanie nie odpalało po prostu dlatego, że działało na laptopie bez przewodu zasilającego ... W zakładce Warunki domyślnie jest zaznaczone, aby zadanie nie działało, gdy zasilanie sieciowe nie jest podłączone.

Chriz
źródło
3

Pod Windows7 Pro stwierdziłem, że rozwiązanie Arun działa dla mnie: mogłem to uruchomić nawet bez zalogowanego użytkownika, wybrałem najwyższe uprawnienia.

Z poprzednich doświadczeń wynika, że ​​musisz mieć konto z hasłem (puste hasła nie są dobre), a jeśli program nie monituje o hasło po zakończeniu pracy kreatora, wróć i edytuj coś, aż to się stanie!

To jest metoda na wypadek, gdyby nie było jasne, która zadziałała

Action: start a program
Program/script : cmd
      (doesn't need the .exe bit!)
Add arguments:
    /c start "" "E:\Django-1.4.1\setup.bat" 
Bruce Metelerkamp
źródło
3

Bawiłem się tym przez kilka godzin i próbowałem wielu różnych sugestii.

W końcu udało mi się to, wykonując następujące czynności:

Akcja: Uruchom program

Program / skrypt: C: \ scriptdir \ script.bat

Dodaj argumenty (opcjonalnie) script.bat

Zacznij od (opcjonalnie): c: \ scriptdir

działać tylko wtedy, gdy użytkownik jest zalogowany

działać z najwyższymi uprawnieniami

skonfiguruj dla: Windows Vista, Windows Server 2008

Robb
źródło
2

Jeśli cała reszta się nie powiedzie, upewnij się, że użytkownik, którego próbujesz uruchomić, ma dostęp do pliku, którego próbujesz użyć.

W moim przypadku próbowałem uruchomić plik wsadowy z C: \ Users \ Administrator \ Desktop, do którego konto nie miało dostępu. Przeniesienie go do neutralnej lokalizacji na C: \ rozwiązało problem.

Vince
źródło
1

Sprawdź, którego konta użytkownika używasz do wykonania naszego zadania. Może się zdarzyć, że zadanie zostanie uruchomione z innym użytkownikiem niż domyślny, a ten użytkownik wymaga dodatkowych uprawnień. Może się również zdarzyć, że zadanie zostanie wykonane, ale nie zobaczysz żadnego efektu, ponieważ plik wsadowy czeka na odpowiedź użytkownika, więc sprawdź menedżera zadań, jeśli widzisz, że proces działa. Kiedyś zdarzyło się, że zaplanowałem pakiet z aktualizacją svn jakiejś strony internetowej i proces się zawiesił, ponieważ svn poprosił o zaakceptowanie certyfikatu serwera.

user6039542
źródło
1
  1. Nie używaj podwójnych cudzysłowów w pliku cmd / wsadowym
  2. Upewnij się, że idziesz do pełnej ścieżki, zaczynając w (opcjonalnie) :
    C: \ Plik_niezbędny \ Reqular_task \ QDE \ cmd_practice \

wprowadź opis obrazu tutaj

Shahidul Islam Molla
źródło
1

Odpowiedź na to pytanie zamieszczam tutaj i tutaj .

wprowadź opis obrazu tutaj

ToCarbajal
źródło
Jeśli masz pewność, że druga odpowiedź jest prawidłowa, możesz oznaczyć pytanie jako zduplikowane.
Badro Niaimi
0

Użycie przycisku Uruchom w oknie głównym Harmonogramu zadań w celu przetestowania kilku odmian w końcu znalazło prawidłowe ustawienia. Te dwie opcje muszą być połączone: -Uruchom tylko wtedy, gdy użytkownik jest zalogowany -Uruchamiaj z najwyższymi uprawnieniami. Wszystkie inne odmiany zawiodły. To irytujące cały czas marnowany na to, ale przynajmniej działa. SYSTEM OPERACYJNY: WERSJA WINDOWS 8 (PODSTAWOWA)

sapitron
źródło
0

Spróbuj uruchomić zadanie z wysokimi uprawnieniami.

umieść \ na końcu ścieżki w „początku w folderze”, na przykład c: \ temp \

Nie wiem dlaczego, ale czasami to działa.

C Jee
źródło
0

Akcja: Start a Program

Program / scenariusz: C:\Windows\System32\cmd.exe

Dodaj argumenty: /k start "" "E:\scripts\example.bat"

Dodaj exitna końcu pliku wsadowego.

Okno cmd nie pojawi się, jeśli wybierzesz Run whether user is logged in or not. Musisz wybrać, Run only when user is logged onaby zobaczyć okno w akcji.

Ethan Allen
źródło