Thaiadmin

จะทำให้ batch file แสดง % ระหว่างทำงานได้อย่างไร

0 สมาชิก และ 1 บุคคลทั่วไป กำลังดูหัวข้อนี้

จะทำให้ batch file แสดง % ระหว่างทำงานได้อย่างไรครับ

อย่างเช่นสั่ง script นี้

โค๊ด: [Select]
@echo off

echo  copy data , please wait . . .
@echo off
if not exist "C:\iPAP\" goto :iPA

:iPA
xcopy "K:\iPAP\*" "C:\iPAP" /S /I /Q /Y
..
.
.
.
.
.
.

เนื่องจาก Floder มีขนาดใหญ่ จึงอยากให้มี % บอกที่บรรทัดต่อจาก copy data , please wait . . . ว่า Copy ไปกี่ % แล้วครับ
เพราะว่าทำไปให้ user จำนวนมากใช้ มีหลายท่านที่พอรอไปสักระยะหนึ่งแล้วไม่มีอะไรเปลี่ยนแปลง เค้าจะปิดหน้า cmd ทิ้งไปก่อน
ทำให้ script ที่ต้องทำงานต่อจาก copy ไม่ถูกสั่งครับ

อยากให้รันแล้วขึ้น

อ้างถึง
copy data , please wait . . .
Current Copy... ??%

ตรง ?? ก็ให้เป็นเลข % รันอยู่ที่บรรทัดเดิมไปเรื่อยๆ จะทำได้หรือไม่ครับ ขอคำแนะนำด้วยครับ

ขอบคุณครับ

ออฟไลน์ ~ RoNiN ~

  • *****
  • 553
  • 7
  • เพศ: ชาย
  • ทำดีแต่อย่าเด่นจะเป็นภัย
Re: จะทำให้ batch file แสดง % ระหว่างทำงานได้อย่างไร
« ตอบกลับ #1 เมื่อ: 14 มีนาคม 2014, 07:16:31 »
copy + batch เพียวๆไม่น่าจะได้นะครับ :-\
ถ้าเปลี่ยนไปใช้ FTP นี่เหมือนว่าจะมี file transfer บอกนะถ้าจำไม่ผิด ^-^
หรือไม่ก็อาจจะต้องใช้ tool อื่นๆร่วมด้วย
Hello Thailand

Re: จะทำให้ batch file แสดง % ระหว่างทำงานได้อย่างไร
« ตอบกลับ #2 เมื่อ: 14 มีนาคม 2014, 08:58:25 »
น่าเสียดายจัง  :'( :'( :'(
เมื่อ: 14 มีนาคม 2014, 08:47:00
แล้วถ้าเราจะทำการจำลอง ในลักษณะเดียวกับ file transfer ขึ้นมาจะได้หรือไม่ครับ

อย่างเช่นโฟลวนี้
1. นับจำนวนไฟล์ทั้งหมดใน Folder ต้นทางเก็บใว้ในตัวแปร
2. วนรอบ Copy 1 รอบต่อ 1 ไฟล์
3. แต่ละรอบให้เอาจำนวนรอบขณะนั้น หารจำนวนรอบทั้งหมด (ได้%ของ file transfer) และแสดงข้อความที่หน้าจอ
4. จบ loop วนขึ้นไปทำบรรทัดแรกใหม่ โดยให้ลบบรรทัด %file transfer ที่แสดงอยู่เดิมทิ้งไปก่อน

การทำงานอาจจะช้ากว่าเดิมหน่อย แต่ผมว่า user ไม่ปิดก่อนแน่ครับ เพราะว่าเห็นความคืบหน้า(มีกำลังใจในการรอ  ::))

**ทั้งหมดทำขึ้นเป็น Batch File นะครับ
ขอบคุณครับ

ออฟไลน์ ~ RoNiN ~

  • *****
  • 553
  • 7
  • เพศ: ชาย
  • ทำดีแต่อย่าเด่นจะเป็นภัย
Re: จะทำให้ batch file แสดง % ระหว่างทำงานได้อย่างไร
« ตอบกลับ #3 เมื่อ: 14 มีนาคม 2014, 15:53:42 »
ถ้าว่าตาม flow นะครับ
1 ใช้ for นับไฟล์ เก็บใส่ตัวแปรได้
2 ลูป copy ด้วย for อีกเหมือนกัน
3 สามารถใช้ ERRORLEVEL ร่วมกับ if เพื่อตรวจสอบเงื่อนไขการ copy ไฟล์ และเปลี่ยนค่าตัวแปลหลัง copy ไฟล์เสร็จ เพื่อนำไปใช้แสดงผลอีกที
4 loop แสดงผล อาจจะต้อง CLS ทุกครั้งก่อนแสดงค่าตัวแปรที่ต้องการแสดงสถานะ

ตาม flow นี้จะเป็นลักษณะ แสดงผลในรูปแบบ นี้ครับ

จำนวนไฟล์ที่copyไปแล้ว / จำนวนไฟล์ทั้งหมด

ด้วยเงื่อนไขของ batch ไม่ง่ายเท่าไหร่นะครับ เรื่อง loop กับ แสดงผลเนี่ย  :o
Hello Thailand

Re: จะทำให้ batch file แสดง % ระหว่างทำงานได้อย่างไร
« ตอบกลับ #4 เมื่อ: 14 มีนาคม 2014, 16:29:03 »
ขอบคุณครับ

จะพยายามลองดูหลายๆแบบครับ เดี๋ยวขอศึกษาเพิ่มเติมก่อน cls กับ errorlever แล้วก็ if และ copy  O0

ออฟไลน์ Supanirun.R

  • *****
  • 1,772
  • 5
  • เพศ: ชาย
  • TH@min Membership
Re: จะทำให้ batch file แสดง % ระหว่างทำงานได้อย่างไร
« ตอบกลับ #5 เมื่อ: 15 มีนาคม 2014, 12:20:26 »
Robocopy

http://technet.microsoft.com/en-us/library/cc733145.aspx

จะมี % บอกเหมือนที่คุณอยากได้ครับ แต่จะตรงตามความต้องการหรือไม่ ลองดูก่อนครับ

ตั้งแต่ windows 7 - 8 จะมี Robocopy เป็น built-in tool มาให้
แต่ถ้าเป็น XP ต้อง Download มาติดตั้งเองครับ

ผิดอย่างไรต้องขออภัยด้วยครับ

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

Re: จะทำให้ batch file แสดง % ระหว่างทำงานได้อย่างไร
« ตอบกลับ #6 เมื่อ: 18 มีนาคม 2014, 08:48:02 »
Robocopy

http://technet.microsoft.com/en-us/library/cc733145.aspx

จะมี % บอกเหมือนที่คุณอยากได้ครับ แต่จะตรงตามความต้องการหรือไม่ ลองดูก่อนครับ

ตั้งแต่ windows 7 - 8 จะมี Robocopy เป็น built-in tool มาให้
แต่ถ้าเป็น XP ต้อง Download มาติดตั้งเองครับ

ผิดอย่างไรต้องขออภัยด้วยครับ

ถ้าผมทำ bat เสร็จแล้วเอาไปใช้เครื่องที่ไม่ได้ติดตั้ง Robocopy เอาใว้ จะรันได้เลย หรือว่าผมต้องแน่ใจก่อนว่าทุกเครื่องต้องมี Robocopy แล้วครับ

โชคดีครับ

เมื่อ: 18 มีนาคม 2014, 08:46:59
Robocopy

http://technet.microsoft.com/en-us/library/cc733145.aspx

จะมี % บอกเหมือนที่คุณอยากได้ครับ แต่จะตรงตามความต้องการหรือไม่ ลองดูก่อนครับ

ตั้งแต่ windows 7 - 8 จะมี Robocopy เป็น built-in tool มาให้
แต่ถ้าเป็น XP ต้อง Download มาติดตั้งเองครับ

ผิดอย่างไรต้องขออภัยด้วยครับ

โชคดีครับ

ถ้าผมทำ bat เสร็จแล้วเอาไปใช้เครื่องที่ไม่ได้ติดตั้ง Robocopy เอาใว้ จะรันได้เลย หรือว่าผมต้องแน่ใจก่อนว่าทุกเครื่องต้องมี Robocopy แล้วครับ


**กด edit post ไม่ได้เหรอครับ

ออฟไลน์ Supanirun.R

  • *****
  • 1,772
  • 5
  • เพศ: ชาย
  • TH@min Membership
Re: จะทำให้ batch file แสดง % ระหว่างทำงานได้อย่างไร
« ตอบกลับ #7 เมื่อ: 18 มีนาคม 2014, 09:10:19 »
Share batch file ไว้บนเครื่องที่มี  Robocopy แล้วถ้าใครจะเรียกใช้ก็ค่อยไป Double Click ก็ได้ครับ

ยังไม่ได้ลองนะครับ มีแต่ทฤษฎี  ;D
กลุ่มผู้ดูแลระบบแห่งประเทศไทย ขอระงับการใช้ลายเซ็นต์รูปภาพ
อนุญาตให้ใช้ได้เพียง ลายเซ็นต์ที่เป็นข้อความ
จึงประกาศมาเพื่อขอความร่วมมือ จากสมาชิกทุกๆ ท่าน
ในนาม กลุ่มผู้ดูแลระบบแห่งประเทศไทย