Chạy một tệp bó với bộ lập lịch tác vụ Windows


154

Tôi có một tệp bó hàng ngày.bat, đây là mã:

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

Và tôi đã tạo một tác vụ với trình lập lịch tác vụ trong Windows 7. Khi tôi chạy lô thủ công, mọi thứ đều ổn, nhưng khi tôi cố chạy nó với trình lập lịch tác vụ thì không có gì xảy ra.

Hành động của tôi là

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

UAC tắt và tôi là Admin.

Bất cứ ý tưởng tại sao điều này không làm việc?


Không chắc chắn nếu câu hỏi này là không chính đáng nhưng bạn có thể nhận được câu trả lời tốt hơn trên serverfault.com cho nó.
Hans Olsson

Cảm ơn tôi cũng sẽ cố gắng đăng nó trên serverfault
Ruben

điều này cũng có thể hữu ích: serverfault.com/questions/734035/ từ
Ruben

Câu trả lời:


285

Tôi đã đối mặt với cùng một vấn đề, nhưng tôi đã tìm thấy một giải pháp khác mà không phải sửa đổi tập lệnh bó của mình.

Điều duy nhất tôi đã bỏ lỡ là ở cài đặt 'Hành động' - tùy chọn "Bắt đầu trong (Tùy chọn)".

Chuyển đến thuộc tính tác vụ -> tab Hành động -> Chỉnh sửa -> Điền vào như bên dưới:

  1. Hành động : Bắt đầu một chương trình
  2. Chương trình / tập lệnh : đường dẫn đến tập lệnh bó của bạn, vdC:\Users\beruk\bodo.bat
  3. Thêm đối số (tùy chọn) : <nếu cần - tùy thuộc vào tập lệnh của bạn>
  4. Bắt đầu trong (tùy chọn) : Đặt đường dẫn đầy đủ đến vị trí tập lệnh bó của bạn, ví dụ: C:\Users\beruk\(Không đặt dấu ngoặc kép quanh Bắt đầu)

Sau đó bấm OK

Nó làm việc cho tôi. Chúc may mắn!


8
Tôi biết bài gốc khá cũ. Nhưng bài đăng này là một trong những liên kết hàng đầu trong tìm kiếm google khi tôi đang cố gắng trả lời cho vấn đề này. Vì vậy, tôi nghĩ rằng tôi muốn chia sẻ những phát hiện. Chỉ trong trường hợp, bất cứ ai kể cả bản thân tôi cũng đang quên điều này.
Ghazi

4
Tôi không tin rằng bạn thực sự cần giá trị 'Bắt ​​đầu (tùy chọn)' - Tôi có thể chạy tệp .bat đơn giản, độc lập mà không cần nó. Cảm ơn vì các bước rõ ràng - rất hữu ích cho những người tìm kiếm một bước đi đơn giản!
DCauss

23
@DCauss, Nếu không có bộ Start Intham số, tệp bó theo lịch trình của tôi sẽ không chạy được. (Windows 7)
Justin Skiles

2
Giải pháp này không hiệu quả với tôi. Câu trả lời được cung cấp bởi @Arun Raja hoạt động tốt.
Cagy79

7
@DCauss Start inlà lý do chính nó làm việc cho tôi.
Gustavo

54

Không có phương pháp nào ở trên hoạt động. Tôi đã thử nó theo cách này như đã nói trong một hướng dẫn và nó đã hoạt động.

Hoạt động:

Start a program 

Chương trình / kịch bản:

cmd

Thêm đối số:

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

Làm việc cho tôi trên Win7 Pro. Bạn phải có một tài khoản với mật khẩu (mật khẩu trống không tốt)


1
Tôi đồng tình! không có giải pháp nào trước đây hoạt động với tôi trên Windows Server 2008. Câu trả lời này đã giúp tôi rất nhiều! Cảm ơn.
Cagy79

Tôi ước tôi có thể cho bạn +2000. Tôi đã thử các cách tiếp cận khác nhau cả ngày và không có gì hiệu quả ngoại trừ giải pháp của bạn. Tôi đã phải khởi chạy một tệp bó, lần lượt khởi chạy một tệp bó khác 10 lần với các tham số khác nhau. Từ bảng điều khiển, mọi thứ đều hoạt động tốt nhưng Trình lập lịch tác vụ đã từ chối mở hơn 4 quy trình cùng một lúc. Thật kỳ lạ ... Với kỹ thuật của bạn, tất cả 10 quy trình đã được đưa ra.
Icarus

Phương pháp này làm việc cho tôi. Nhưng, trong trình lập lịch biểu, trong tab lịch sử, tác vụ hoàn thành ngay lập tức với thành công, vì tác vụ là cmd, nhưng không phải là tệp .bat mà nó khởi chạy. Kể từ khi tập tin bat, một hoạt động sao lưu, kết thúc sau 2-3 giờ, tôi không biết tình trạng của nó.
azzurroverde 10/11/2015

bạn cần giữ một thông báo thư vào cuối quá trình hoàn thành tập tin bat để thông báo trạng thái của nó. đó là một cách
Arun Raja

Điều này hoạt động, kết hợp với mẹo nên được đặt để chạy trong một thư mục được chỉ định như được đề cập trong câu trả lời được chấp nhận của @ Ghazi, đảm bảo rằng "chạy với các đặc quyền cao nhất" cũng được chọn.
mapsvers

43

Đối với những người có tệp dơi vẫn không hoạt động trong Windows 8+ Trình lập lịch tác vụ, một điều tôi muốn thêm vào câu trả lời của Ghazi - sau nhiều đau khổ:

1) Trong phần Hành động, chọn "Tạo tác vụ BASIC ", không phải "Tạo tác vụ"

Điều đó đã làm cho tôi, cộng với các vấn đề khác không thể quên:

  1. Sử dụng đường dẫn Start In đến tệp bó của bạn, mặc dù nó nói là tùy chọn
  2. sử dụng dấu ngoặc kép, nếu bạn cần, trong Bắt đầu một chương trình> mục nhập chương trình / tập lệnh, tức là "C: \ my scripts \ runme.bat" ...
  3. NHƯNG KHÔNG sử dụng dấu ngoặc kép trong trường Bắt đầu của bạn. (Điên rồ nhưng có thật!)

Điều này làm việc mà không cần phải kích hoạt một dấu nhắc lệnh.

(Xin lỗi, đại diện của tôi quá thấp để thêm mẹo Nhiệm vụ cơ bản của tôi vào nhận xét của Ghazi)



7

Nó đang làm việc. Đây là những gì tôi đã làm. Bạn có thể sẽ không cần tất cả các bước này để làm cho nó hoạt động nhưng chỉ để chắc chắn thử tất cả:

  • Kiểm tra các tham số tài khoản của tác vụ theo lịch trình của bạn và đảm bảo chúng được đặt để chạy cho dù có ai đó đăng nhập vào máy hay không

  • kiểm tra chạy với hầu hết các đặc quyền / quyền

  • Hãy chắc chắn rằng bạn đi đến đường dẫn đầy đủ trước: cd C: \ inetpub \ wwwroot \ infoweb \ factuur \ cron

  • Không sử dụng dấu ngoặc kép trong các tệp bó của bạn (không biết tại sao nhưng dường như có ích)

  • Trở thành siêu quản trị viên, nhập 'Quản trị viên / người dùng mạng đang hoạt động: có' trong dấu nhắc lệnh, đăng xuất và đăng nhập với tư cách là siêu quản trị viên, vì vậy UAC bị tắt


2
Xin lỗi để nói, nhưng đây là một câu trả lời bằng văn bản rất kém. Tôi sẽ đảm bảo câu trả lời thích hợp được chọn là câu trả lời được chấp nhận.
jwize

5

Đảm bảo "Bắt đầu" không kết thúc bằng BACKSLASH.


1
Bạn có thể làm rõ phiên bản hệ điều hành hoặc loại nhiệm vụ hoặc bất kỳ thông tin nào được áp dụng cho? Câu trả lời được chấp nhận bao gồm một \ vì vậy nó phải hoạt động trên một số hệ thống - nơi nó không hoạt động?
lessthanideal

Điều này đã sửa lỗi tác vụ 'foo.cmd' được lên lịch cho tôi trên Windows Server 2012. Với 'Bắt ​​đầu' được đặt thành 'C: \ Foo \', tác vụ không thành công với lỗi mã thoát 0x8007001, nhưng với 'Bắt ​​đầu' được đặt thành 'C : \ Foo 'nhiệm vụ chạy tốt.
Aaron

5

Có một vấn đề trong đó nhiệm vụ của tôi không kích hoạt chỉ vì nó đang chạy trên máy tính xách tay mà không có dây nguồn ... Theo tab điều kiện, theo mặc định, nó được kiểm tra để một tác vụ sẽ không chạy trong khi nguồn AC không được kết nối.


3

Trong Windows7 Pro, tôi thấy rằng giải pháp của Arun hoạt động với tôi: Tôi có thể làm cho nó hoạt động ngay cả khi "không có người dùng nào đăng nhập", tôi đã chọn sử dụng quyền riêng tư cao nhất.

Từ kinh nghiệm trong quá khứ, bạn phải có một tài khoản có mật khẩu (mật khẩu trống không tốt) và nếu chương trình không nhắc bạn nhập mật khẩu khi bạn hoàn thành trình hướng dẫn, hãy quay lại và chỉnh sửa một cái gì đó cho đến khi nó thực hiện!

Đây là phương pháp trong trường hợp không rõ.

Action: start a program
Program/script : cmd
      (doesn't need the .exe bit!)
Add arguments:
    /c start "" "E:\Django-1.4.1\setup.bat" 

3

Tôi đã làm hỏng điều này trong vài giờ và thử nhiều gợi ý khác nhau.

Cuối cùng tôi đã có nó để làm việc bằng cách làm như sau:

Hành động: Bắt đầu một chương trình

Chương trình / Tập lệnh: C: \ scriptdir \ script.bat

Thêm đối số (tùy chọn) script.bat

Bắt đầu bằng (tùy chọn): c: \ scriptdir

chỉ chạy khi người dùng đăng nhập

chạy với đặc quyền cao nhất

cấu hình cho: Windows Vista, Windows Server 2008


2

Nếu tất cả các phần còn lại không thành công cho bạn ở đây, đảm bảo rằng người dùng bạn đang cố chạy tác vụ có quyền truy cập vào tệp bạn đang cố sử dụng.

Trong trường hợp của tôi, tôi đã cố chạy một tệp bó từ C: \ Users \ Administrator \ Desktop mà tài khoản không thể truy cập. Di chuyển nó đến một vị trí trung lập trên C: \ đã giải quyết vấn đề.


1

Vui lòng kiểm tra tài khoản người dùng bạn sử dụng để thực hiện nhiệm vụ của chúng tôi. Nó có thể xảy ra khi bạn chạy tác vụ của mình với người dùng khác sau đó là người dùng mặc định của bạn và người dùng này yêu cầu một số đặc quyền bổ sung. Ngoài ra, có thể xảy ra rằng tác vụ được thực thi nhưng bạn không thể thấy bất kỳ hiệu ứng nào vì tệp bó chờ một số phản hồi của người dùng, vì vậy vui lòng kiểm tra trình quản lý tác vụ nếu bạn thấy quy trình của mình đang chạy. Khi nó xảy ra, tôi lên lịch một đợt với cập nhật svn của một số trang web và quá trình bị treo vì svn yêu cầu chấp nhận chứng chỉ máy chủ.


1
  1. Không sử dụng dấu ngoặc kép trong tệp cmd / batch của bạn
  2. Hãy chắc chắn rằng bạn đi đến đường dẫn đầy đủ bắt đầu trong (tùy chọn) :
    C: \ N cần_file \ Reqular_task \ QDE \ cmd_practice \

nhập mô tả hình ảnh ở đây



0

Sử dụng nút Run trong cửa sổ chính của Trình lập lịch tác vụ để kiểm tra một số biến thể cuối cùng đã tìm thấy các cài đặt chính xác. Hai tùy chọn này phải được kết hợp: -Run chỉ khi người dùng đăng nhập vào -Run với các đặc quyền cao nhất. Tất cả các biến thể khác đều thất bại. Nó gây phẫn nộ tất cả thời gian lãng phí cho điều này, nhưng ít nhất nó hoạt động. HĐH: PHIÊN BẢN 8 CORE (CƠ BẢN)


0

Hãy thử chạy nhiệm vụ với các đặc quyền cao.

đặt một \ ở cuối đường dẫn trong "start in thư mục", chẳng hạn như c: \ temp \

Tôi không biết tại sao, nhưng điều này đôi khi làm việc cho tôi.


0

Hoạt động: Start a Program

Chương trình / kịch bản: C:\Windows\System32\cmd.exe

Thêm đối số: /k start "" "E:\scripts\example.bat"

Thêm vào exit vào cuối tập tin lô của bạn.

Cửa sổ cmd sẽ không hiển thị nếu bạn chọn Run whether user is logged in or not. Bạn cần chọn Run only when user is logged onđể xem cửa sổ hoạt động.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.