งานและเครื่องพิมพ์ตามกำหนดเวลา

ฉันต้องการดูโฟลเดอร์ในเครื่อง Win7 64 บิตของฉันสำหรับไฟล์ pdf ใหม่ - และพิมพ์โดยอัตโนมัติเมื่อมีไฟล์ pdf ในโฟลเดอร์ หลังจากพิมพ์แล้ว ควรย้ายไฟล์ pdf ไปไว้ในโฟลเดอร์ย่อย ดังนั้นหลังจากการค้นคว้าของ Google ฉันจึงสร้างไฟล์แบตช์ขนาดเล็ก

cd "D:\print"
for %%i in (*.pdf) do (
"C:\Program Files\Tracker Software\PDF Viewer\PDFXCview.exe" /print "%%i" 
timeout /T 10 /nobreak
move D:\print\*.pdf D:\print\printed
echo %%i
)

ฉันเก็บสิ่งนี้ไว้ในโฟลเดอร์ d:\print เป็น print.cmd เมื่อฉันเริ่ม cmd ด้วยการดับเบิลคลิก เครื่องพิมพ์ของฉันจะเริ่มทำงานและไฟล์ pdf จะย้ายไปยังโฟลเดอร์ย่อยที่ฉันกำหนดไว้ (D:\print\printed)

หากต้องการดูโฟลเดอร์ ฉันมีความคิดที่จะสร้างงานที่กำหนดเวลาไว้ซึ่งทำซ้ำ cmd-script นี้ตลอด 5 นาที

แต่: สิ่งนี้ใช้ไม่ได้ เมื่อสคริปต์เริ่มทำงานผ่านงานที่กำหนดเวลาไว้ เครื่องพิมพ์จะไม่ทำงาน - "การเคลื่อนไหว" ของไฟล์กำลังทำงานแทน

ฉันเข้าสู่งานที่กำหนดไว้:

โปรแกรม: C:\Windows\SysWOW64\cmd.exe

อาร์กิวเมนต์: /c"d:\print\print.cmd"

มีความคิดเห็นไหมว่าทำไมฉันไม่สามารถเข้าถึงเครื่องพิมพ์ผ่านงานที่กำหนดเวลาไว้ได้ เครื่องพิมพ์เชื่อมต่อผ่าน usb

หวังว่าฉันจะให้ข้อมูลที่จำเป็นได้! ขอบคุณสำหรับคำตอบของคุณ!


person user3325687    schedule 09.03.2017    source แหล่งที่มา
comment
move D:\print\*.pdf D:\print\printed ควรเป็น move D:\print\%%i D:\print\printed ไม่เช่นนั้น ทั้งหมด ของ pdf จะถูกย้ายหลังจากพิมพ์ไปเพียงอันเดียว ไม่สามารถพูดได้ว่าฉันเป็นผู้เชี่ยวชาญในงานที่กำหนดเวลาไว้ แต่สำหรับฉันแล้วดูเหมือนว่าเครื่องพิมพ์เริ่มต้นที่กำหนดภายใต้ผู้ใช้ที่งานที่กำหนดเวลาไว้ทำงานนั้นไม่ใช่เครื่องพิมพ์ usb ที่จำเป็น คุณสามารถเสนอชื่อเครื่องพิมพ์อย่างชัดเจนในอาร์กิวเมนต์ PDFXCview.exe ได้หรือไม่   -  person Magoo    schedule 09.03.2017
comment
คุณได้เลือกการเริ่มต้นในโฟลเดอร์หรือไม่? คุณกำลังเริ่ม cmd.exe ซึ่งทำให้ไดเร็กทอรีการทำงานเป็นไดเร็กทอรี system32 ซึ่งอยู่ในไดรฟ์ C: ดังนั้นเมื่อคุณทำการเปลี่ยนแปลงไดเร็กทอรี คุณจะต้องใช้ตัวเลือก /D เพื่อทำให้ไดเร็กทอรีการทำงานเป็นไดรฟ์ D: เมื่อคุณคลิกสองครั้งที่ไฟล์แบตช์เพื่อเรียกใช้ไดเร็กทอรีการทำงานคือไดรฟ์ D: เพราะนั่นคือที่ที่สคริปต์ถูกจัดเก็บและดำเนินการ   -  person Squashman    schedule 09.03.2017
comment
ว้าว! ฉันได้เพิ่ม d:\print เป็นไดเร็กทอรีการทำงานในงานของฉันและมันก็ใช้งานได้ทันที! ขอบคุณมาก! ตอนนี้ฉันต้องทำการทดสอบและตรวจสอบ และหวังว่าฉันจะสามารถขอให้พวกคุณอีกครั้งเพื่อช่วยฉันปรับปรุงสคริปต์ ;)   -  person user3325687    schedule 09.03.2017
comment
หากไฟล์แบตช์อยู่ใน D:\Print คุณสามารถเพิ่ม PushD %~dp0 เพื่อบังคับให้ D:\Print เป็นไดเร็กทอรีที่ทำงานได้เช่นกัน   -  person Rawns    schedule 09.03.2017


คำตอบ (1)


  1. เปลี่ยนบรรทัดนี้: move D:\print\*.pdf ถึง move /Y D:\print\%%i

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

คุณยังสามารถแก้ไขไฟล์แบตช์และเขียนโค้ดให้วนซ้ำทุกๆ 5 นาที ดังนั้นคุณจึงต้องเริ่มมันเพียงครั้งเดียว:

    PushD %~dp0    
    :start
    for %%i in ("D:\print\*.pdf") do (
    "C:\Program Files\Tracker Software\PDF Viewer\PDFXCview.exe" /print "%%i" 
    move /y "%%i" "D:\print\printed"
    echo %%i
    )
    timeout /T 300 /nobreak
    goto start
person Rawns    schedule 09.03.2017
comment
%%i เป็นพาธทั้งหมดไปยังไฟล์ ดังนั้นคำสั่ง move จึงสามารถเป็นได้ move /y "%%i" "D:\print\printed" - person Squashman; 09.03.2017
comment
พยายามแล้ว เมื่อมี 3 ไฟล์ในโฟลเดอร์ มันจะพิมพ์ไฟล์แรกแล้วย้าย จากนั้นจะพิมพ์ไฟล์ที่สองแล้วย้าย และอื่นๆ ทำงานได้ค่อนข้างดี อะไรจะดีไปกว่ากันในการสร้างงานที่ได้ผลทุกๆ 5 นาทีหรือทำงานกับ t 300 และข้ามไปเริ่มต้น ถ้าอย่างนั้นฉันต้องเริ่มงานเฉพาะเมื่อเปิดเครื่องพีซี คุณจะแนะนำฉันอย่างไร มีตัวเลือกใดที่จะย่อหน้าต่าง CMD หรือซ่อนไว้เมื่อทำงานหรือไม่? - person user3325687; 10.03.2017
comment
อย่างใดอย่างหนึ่งจริงๆ ฉันเดาว่างานที่ทำงานทุกๆ ห้านาทีจะทำให้เกิดความซ้ำซ้อน ดังนั้นหากหน้าต่าง cmd ล้มเหลว งานจะเริ่มต้นใหม่ทุกๆ ห้านาที แทนที่จะรอให้ใครสักคนออกจากระบบแล้วเปิดใหม่อีกครั้ง ตั้งค่างานที่กำหนดเวลาไว้ให้ทำงานโดยใช้บัญชีระบบ เพื่อไม่ให้ผู้ใช้ที่เข้าสู่ระบบมองเห็นได้ - person Rawns; 10.03.2017