เรียกใช้ไฟล์แบตช์ด้วยตัวกำหนดเวลางาน Windows


155

ฉันมีไฟล์ชุดทุกวันค้างคาวนี้เป็นรหัส:

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

และฉันสร้างงานด้วย task scheduler ใน Windows 7 เมื่อฉันรัน batch ด้วยตนเองทุกอย่างเป็นไปด้วยดี แต่เมื่อฉันพยายามเรียกใช้งานโดย task scheduler ไม่มีอะไรเกิดขึ้น

การกระทำของฉันคือ

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

UAC ปิดใช้งานและฉันเป็นผู้ดูแลระบบ

มีความคิดว่าทำไมสิ่งนี้ถึงใช้งานไม่ได้?


ถ้าไม่แน่ใจว่าคำถามนี้เป็น offtopic แต่คุณอาจจะได้รับการตอบสนองที่ดีขึ้นในserverfault.comสำหรับมัน
Hans Olsson

ขอบคุณฉันจะพยายามโพสต์ไว้ใน serverfault ด้วย
Ruben

สิ่งนี้สามารถเป็นประโยชน์ได้เช่นกัน: serverfault.com/questions/734035/…
Ruben

คำตอบ:


287

ฉันประสบปัญหาเดียวกัน แต่ฉันพบวิธีแก้ไขปัญหาอื่นโดยไม่ต้องแก้ไขชุดสคริปต์ของฉัน

สิ่งเดียวที่ฉันพลาดคือการตั้งค่า 'การกระทำ' - ตัวเลือก "เริ่มใน (ตัวเลือก)"

ไปที่คุณสมบัติของงาน -> แท็บการกระทำ -> แก้ไข -> เติมดังต่อไปนี้:

  1. การดำเนินการ : เริ่มโปรแกรม
  2. โปรแกรม / สคริปต์ : เส้นทางไปยังสคริปต์ชุดงานของคุณเช่นC:\Users\beruk\bodo.bat
  3. เพิ่มอาร์กิวเมนต์ (เป็นทางเลือก) : <ถ้าจำเป็น - ขึ้นอยู่กับสคริปต์ของคุณ>
  4. เริ่มใน (ตัวเลือก) : ใส่เส้นทางแบบเต็มไปยังตำแหน่งสคริปต์ชุดงานของคุณเช่นC:\Users\beruk\(อย่าใส่เครื่องหมายคำพูดล้อมรอบเริ่มใน)

จากนั้นคลิกตกลง

มันใช้งานได้สำหรับฉัน โชคดี!


8
ฉันรู้ว่าโพสต์ต้นฉบับค่อนข้างเก่า แต่โพสต์นี้เป็นหนึ่งในลิงค์ยอดนิยมในการค้นหาของ Google เมื่อฉันพยายามตอบปัญหานี้ ดังนั้นฉันคิดว่าฉันต้องการแบ่งปันผลการวิจัย ในกรณีที่ทุกคนรวมถึงตัวฉันกำลังลืมเรื่องนี้
Ghazi

4
ฉันไม่เชื่อว่าคุณต้องการค่า 'เริ่มต้นใน (ตัวเลือก)' - ฉันสามารถเรียกใช้ไฟล์. bat ที่เรียบง่ายและมีอยู่ในตัวเองได้หากไม่มี ขอบคุณสำหรับขั้นตอนที่ชัดเจน - มีประโยชน์มากสำหรับผู้ที่มองหาการเดินผ่านที่เรียบง่าย!
DCaugs

23
@DCaugs หากไม่มีการStart Inตั้งค่าพารามิเตอร์ไฟล์แบตช์ตามกำหนดเวลาของฉันจะไม่ทำงานเลย (Windows 7)
Justin Skiles

2
วิธีนี้ไม่ได้ผลสำหรับฉัน คำตอบที่ @Arun Raja ทำงานได้ดี
Cagy79

7
@ DCugs Start inเป็นเหตุผลหลักที่ทำให้ฉันทำงานได้ดี
Gustavo

54

วิธีการข้างต้นไม่ทำงาน ฉันลองด้วยวิธีนี้ตามที่กล่าวไว้ในบทช่วยสอนและใช้งานได้

หนังบู๊:

Start a program 

โครงการ / script:

cmd

เพิ่มข้อโต้แย้ง:

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

ทำงานให้ฉันใน Win7 Pro คุณต้องมีบัญชีด้วยรหัสผ่าน (รหัสผ่านว่างเปล่าไม่ดี)


1
ฉันเห็นด้วย! วิธีการแก้ปัญหาก่อนหน้านี้ไม่เหมาะกับฉันใน Windows Server 2008 คำตอบนี้ได้หลอกลวงฉัน! ขอบคุณ
Cagy79

ฉันหวังว่าจะให้ +2000 แก่คุณ ฉันได้ลองวิธีการที่แตกต่างกันตลอดทั้งวันและไม่มีอะไรทำงานได้ดียกเว้นทางออกของคุณ ฉันต้องเปิดไฟล์แบตช์ซึ่งจะเปิดไฟล์แบทช์อีก 10 ครั้งด้วยพารามิเตอร์ที่แตกต่างกัน จากคอนโซลทุกอย่างทำงานได้ดี แต่ Task Scheduler ปฏิเสธที่จะเปิดกระบวนการมากกว่า 4 กระบวนการในเวลาเดียวกัน มันแปลก ... ด้วยเทคนิคของคุณกระบวนการทั้งหมด 10 กระบวนการถูกเปิดตัว
อิคารัส

วิธีนี้ใช้ได้ผลสำหรับฉัน แต่ในตัวกำหนดตารางเวลาในแท็บประวัติงานจะเสร็จสมบูรณ์ทันทีพร้อมความสำเร็จเนื่องจากงานคือ cmd แต่ไม่ใช่ไฟล์. bat ที่เรียกทำงาน ตั้งแต่ไฟล์ bat การสำรองข้อมูลสิ้นสุดลงใน 2-3 ชั่วโมงฉันจึงไม่ทราบสถานะ
azzurroverde

คุณต้องเก็บการแจ้งเตือนทางอีเมลเมื่อสิ้นสุดไฟล์ bat เสร็จสิ้นเพื่อแจ้งสถานะ นั่นเป็นวิธีหนึ่ง
อรุณราชา

สิ่งนี้ได้ผลพร้อมกับเคล็ดลับที่ควรตั้งค่าให้ทำงานในไดเรกทอรีที่ระบุตามที่ระบุไว้ในคำตอบที่ยอมรับของ @ Ghazi ทำให้แน่ใจว่าได้เลือก "การทำงานที่มีสิทธิ์สูงสุด" ด้วย
mheavers

43

สำหรับผู้ที่มีไฟล์ค้างคาวยังคงไม่ทำงานใน Windows 8+ Task Scheduler สิ่งหนึ่งที่ฉันต้องการเพิ่มในคำตอบของ Ghazi - หลังจากความทุกข์ทรมานมาก:

1) ภายใต้การกระทำเลือก "สร้างงานพื้นฐาน " ไม่ใช่ "สร้างงาน"

ที่ทำเพื่อฉันรวมทั้งปัญหาอื่น ๆ ที่จะไม่ลืม:

  1. ใช้พา ธเริ่มต้นในไปยังไฟล์แบตช์ของคุณแม้ว่าจะระบุหรือไม่ก็ได้
  2. ใช้เครื่องหมายคำพูดหากคุณต้องการในรายการ Start a program> program / script เช่น "C: \ my scripts \ runme.bat" ...
  3. แต่ไม่ต้องใช้เครื่องหมายคำพูดในฟิลด์เริ่มต้นของคุณ (บ้า แต่จริง!)

สิ่งนี้ใช้ได้โดยไม่จำเป็นต้องเรียกใช้พรอมต์คำสั่งใด ๆ

(ขออภัยตัวแทนของฉันต่ำเกินไปที่จะเพิ่มเคล็ดลับขั้นพื้นฐานของฉันไปที่ความคิดเห็นของ Ghazi)



7

มันใช้งานได้แล้ว นี่คือสิ่งที่ฉันทำ คุณอาจไม่จำเป็นต้องทำตามขั้นตอนเหล่านี้เพื่อให้มันใช้งานได้ แต่เพื่อให้แน่ใจว่าได้ลองทั้งหมด:

  • ตรวจสอบพารามิเตอร์บัญชีของงานที่กำหนดเวลาไว้ของคุณและตรวจสอบให้แน่ใจว่าพวกเขาได้รับการตั้งค่าให้ทำงานไม่ว่าจะมีคนเข้าสู่ระบบหรือไม่ก็ตาม

  • ตรวจสอบการทำงานด้วยสิทธิ์ / สิทธิส่วนใหญ่

  • ตรวจสอบให้แน่ใจว่าคุณไปที่เส้นทางแบบเต็มก่อน: cd C: \ inetpub \ wwwroot \ infoweb \ factuur \ cron

  • อย่าใช้เครื่องหมายคำพูดคู่ในไฟล์แบตช์ของคุณ (ไม่รู้ว่าทำไม แต่ดูเหมือนว่าจะช่วยได้)

  • เป็นผู้ดูแลระบบขั้นสูงป้อน 'ผู้ดูแลระบบผู้ใช้เน็ต / ใช้งาน: ใช่' ในพร้อมท์คำสั่งออกจากระบบและเข้าสู่ระบบในฐานะผู้ดูแลระบบขั้นสูงดังนั้น UAC จึงปิด


2
ขออภัยที่จะพูด แต่นี่เป็นคำตอบที่เขียนไม่ดีมาก ฉันจะทำให้แน่ใจว่าได้เลือกคำตอบที่เหมาะสมเป็นคำตอบที่ยอมรับแล้ว
jwize

5

ตรวจสอบให้แน่ใจว่า"เริ่มต้นใน"ไม่จบด้วย BACKSLASH


1
คุณช่วยอธิบายเวอร์ชันของระบบปฏิบัติการหรือประเภทของงานหรือข้อมูลใดที่ใช้กับอะไรได้บ้าง คำตอบที่ยอมรับนั้นรวมถึง \ ดังนั้นจึงต้องใช้กับบางระบบ - มันไม่ทำงานที่ไหน?
lessthanideal

สิ่งนี้ได้แก้ไขงาน 'foo.cmd' ที่กำหนดเวลาไว้สำหรับฉันบน Windows Server 2012 ด้วย 'เริ่มต้นใน' ตั้งค่าเป็น 'C: \ Foo \' งานล้มเหลวโดยมีรหัสข้อผิดพลาดออก 0x8007001 แต่ตั้งค่า 'เริ่มใน' เป็น 'C : \ Foo 'ภารกิจนี้ทำงานได้ดี
แอรอน

5

มีปัญหาที่งานของฉันไม่ได้ยิงเพียงเพราะมันทำงานบนแล็ปท็อปที่ไม่มีสายไฟ ... ภายใต้แท็บเงื่อนไขจะมีการตรวจสอบตามค่าเริ่มต้นเพื่อให้งานไม่ทำงานในขณะที่ไฟ AC ไม่ได้เชื่อมต่อ


3

ภายใต้ Windows7 Pro ฉันพบว่าโซลูชันของอรุณเหมาะกับฉัน: ฉันสามารถใช้งานได้แม้กับ "ไม่มีผู้ใช้ที่ลงชื่อเข้าใช้" ฉันเลือกใช้ priveledges สูงสุด

จากประสบการณ์ที่ผ่านมาคุณต้องมีบัญชีที่มีรหัสผ่าน (รหัสผ่านว่างเปล่าไม่ดี) และหากโปรแกรมไม่พร้อมท์ให้คุณใส่รหัสผ่านเมื่อเสร็จสิ้นตัวช่วยสร้างให้ย้อนกลับไปและแก้ไขบางอย่างจนกว่าจะเสร็จ!

นี่เป็นวิธีการในกรณีที่ไม่ชัดเจนซึ่งทำงานได้

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

ฉันยุ่งกับสิ่งนี้เป็นเวลาหลายชั่วโมงและลองข้อเสนอแนะที่แตกต่างกัน

ในที่สุดฉันก็สามารถทำงานได้โดยทำสิ่งต่อไปนี้:

การดำเนินการ: เริ่มโปรแกรม

โปรแกรม / สคริปต์: C: \ scriptdir \ script.bat

เพิ่มอาร์กิวเมนต์ (เป็นทางเลือก) script.bat

เริ่มใน (ไม่บังคับ): c: \ scriptdir

ทำงานเฉพาะเมื่อผู้ใช้ลงชื่อเข้าใช้

วิ่งด้วยสิทธิพิเศษสูงสุด

กำหนดค่าสำหรับ: Windows Vista, Windows Server 2008


2

หากส่วนที่เหลือทั้งหมดล้มเหลวให้คุณที่นี่ให้แน่ใจว่าผู้ใช้ที่คุณพยายามใช้งานนั้นมีสิทธิ์เข้าถึงไฟล์ที่คุณพยายามใช้

ในกรณีของฉันฉันพยายามเรียกใช้ไฟล์แบตช์จาก C: \ Users \ Administrator \ Desktop ซึ่งบัญชีไม่สามารถเข้าถึงได้ ย้ายไปยังตำแหน่งที่เป็นกลางบน C: \ แก้ไขปัญหา


1

โปรดตรวจสอบบัญชีผู้ใช้ที่คุณใช้เพื่อทำงานของเรา อาจเกิดขึ้นได้ว่าคุณทำงานของคุณกับผู้ใช้ที่แตกต่างกันแล้วผู้ใช้เริ่มต้นของคุณและผู้ใช้นี้ต้องการสิทธิ์พิเศษบางอย่าง อาจเกิดขึ้นได้ว่างานถูกดำเนินการ แต่คุณไม่เห็นผลใด ๆ เพราะไฟล์แบตช์รอการตอบสนองของผู้ใช้บางส่วนดังนั้นโปรดตรวจสอบตัวจัดการงานหากคุณเห็นกระบวนการทำงานของคุณ เมื่อมันเกิดขึ้นที่ฉันกำหนดเวลาชุดที่มีการปรับปรุง svn ของบางหน้าเว็บและกระบวนการแฮงค์เพราะ svn ขอให้ยอมรับใบรับรองเซิร์ฟเวอร์


1
  1. อย่าใช้เครื่องหมายคำพูดคู่ในไฟล์ cmd / batch ของคุณ
  2. ตรวจสอบให้แน่ใจว่าคุณเริ่มต้นเส้นทางแบบเต็ม(ตัวเลือก) :
    C: \ N needed_file \ Reqular_task \ QDE \ cmd_practice \

ป้อนคำอธิบายรูปภาพที่นี่


1

ผมโพสต์คำตอบของคำถามนี้ที่นี่และที่นี่

ป้อนคำอธิบายรูปภาพที่นี่


ตราบใดที่คุณมั่นใจว่าคำตอบอื่นนั้นถูกต้องคุณสามารถตั้งค่าสถานะคำถามซ้ำได้
Badro Niaimi

0

การใช้ปุ่ม Run ในหน้าต่างหลัก Task Scheduler เพื่อทดสอบรูปแบบที่หลากหลายในที่สุดก็พบว่าการตั้งค่าที่ถูกต้อง สองตัวเลือกนี้จะต้องรวมกัน: -Run เฉพาะเมื่อผู้ใช้เข้าสู่ระบบ -Run ด้วยสิทธิ์สูงสุด การเปลี่ยนแปลงอื่น ๆ ทั้งหมดล้มเหลว มันทำให้โกรธตลอดเวลาที่สูญเสียไป แต่อย่างน้อยก็ใช้ได้ ระบบปฏิบัติการ: Windows 8 CORE (พื้นฐาน)


0

ลองเรียกใช้งานด้วยสิทธิ์ระดับสูง

ใส่ \ ที่ส่วนท้ายของพา ธ ใน "start in folder" เช่น c: \ temp \

ฉันไม่รู้ว่าทำไม แต่บางครั้งก็ใช้ได้กับฉัน


0

หนังบู๊: Start a Program

โครงการ / script: C:\Windows\System32\cmd.exe

เพิ่มข้อโต้แย้ง: /k start "" "E:\scripts\example.bat"

เพิ่มexitไปยังจุดสิ้นสุดของไฟล์แบตช์ของคุณ

หน้าต่าง cmd จะไม่Run whether user is logged in or notแสดงถ้าคุณเลือก คุณต้องเลือกRun only when user is logged onเพื่อดูหน้าต่างในการทำงาน

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.