มีวิธีผ่านสคริปต์. bat หรือไม่? สิ่งนี้คือฉันมีสคริปต์สร้างซึ่งเรียกสคริปต์อื่น ๆ มากมายและฉันต้องการดูว่าลำดับที่เรียกว่าอะไรเพื่อที่ฉันจะได้รู้ว่าฉันต้องไปที่ไหนและเพิ่มการแก้ไขของฉัน .
มีวิธีผ่านสคริปต์. bat หรือไม่? สิ่งนี้คือฉันมีสคริปต์สร้างซึ่งเรียกสคริปต์อื่น ๆ มากมายและฉันต้องการดูว่าลำดับที่เรียกว่าอะไรเพื่อที่ฉันจะได้รู้ว่าฉันต้องไปที่ไหนและเพิ่มการแก้ไขของฉัน .
คำตอบ:
ฉันไม่รู้ว่าจะต้องผ่านขั้นตอนการเรียกใช้ไฟล์. bat แต่คุณสามารถใช้echo
และpause
เพื่อช่วยในการดีบัก
ECHO
จะสะท้อนข้อความในไฟล์แบตช์ เช่น ECHO Hello World จะพิมพ์ Hello World บนหน้าจอเมื่อดำเนินการ อย่างไรก็ตามหากไม่มี @ECHO OFF ที่จุดเริ่มต้นของไฟล์แบตช์คุณจะได้รับ "ECHO Hello World" และ "Hello World" ด้วย สุดท้ายหากคุณต้องการสร้างบรรทัดว่างให้พิมพ์ ECHO การเพิ่มจุดต่อท้ายจะสร้างบรรทัดว่างหยุดชั่วคราวแจ้ง
ให้ผู้ใช้กดปุ่มใด ๆ เพื่อดำเนินการต่อ
ที่มา: Batch File Help
@ workmad3: คำตอบมีเคล็ดลับที่ดีเพิ่มเติมสำหรับการทำงานกับecho
คำสั่ง
แหล่งข้อมูลที่เป็นประโยชน์อื่น ๆ ... DDB: DOS Batch File Tips
ตรวจสอบให้แน่ใจว่าไม่มีคำสั่ง 'echo off' ในสคริปต์และเรียก 'echo on' หลังจากเรียกแต่ละสคริปต์เพื่อรีเซ็ตสิ่งที่คุณพลาดไป
เหตุผลก็คือถ้า echo เปิดทิ้งไว้ตัวแปลคำสั่งจะส่งออกคำสั่งแต่ละคำสั่ง (หลังการประมวลผลพารามิเตอร์) ก่อนที่จะดำเนินการ ทำให้ดูแย่มากสำหรับใช้ในการผลิต แต่มีประโยชน์มากสำหรับวัตถุประสงค์ในการดีบักเนื่องจากคุณสามารถดูได้ว่าเอาต์พุตผิดพลาดตรงไหน
ตรวจสอบให้แน่ใจว่าคุณกำลังตรวจสอบ ErrorLevels ที่กำหนดโดยชุดสคริปต์และโปรแกรมที่เรียกว่า โปรดจำไว้ว่ามี 2 วิธีที่แตกต่างกันที่ใช้ในไฟล์. bat สำหรับสิ่งนี้ หากคุณเรียกโปรแกรมระดับข้อผิดพลาดจะอยู่ใน% ERRORLEVEL% ในขณะที่จากไฟล์แบตช์ระดับข้อผิดพลาดจะถูกส่งกลับในตัวแปร ErrorLevel และไม่จำเป็นต้องมี% อยู่รอบ ๆ
ด้วยความกังวลที่คล้ายกันฉันพบเครื่องมือต่อไปนี้จากการค้นหาของ Google เล็กน้อย:
" Take Command " ของ JPSoft มีไฟล์ batch IDE / debugger วิดีโอนำเสนอสั้น ๆของพวกเขาแสดงให้เห็นอย่างสวยงาม
ฉันใช้รุ่นทดลองใช้ตั้งแต่ไม่กี่ชั่วโมง นี่คือความเห็นที่ต่ำต้อยแรกของฉัน:
มันพยายามอย่างมาก
Always quote the most relevant part of an important link
. หากไม่มีลิงก์คำตอบนี้ก็จะหายไปซึ่งอาจจะใช้ได้อีกครั้ง แต่โดยทั่วไปแล้วคำแนะนำเฉพาะกิจประเภทนี้ของซอฟต์แวร์ที่ไม่ผ่านการทดสอบและเป็นกรรมสิทธิ์โดยทั่วไปจะเหมาะสมที่สุดในความคิดเห็น อย่าลังเลที่จะทิ้งไว้เช่นกัน
ฉันพบว่าซอฟต์แวร์ 'กำลังรันขั้นตอน' (win32) ทำในสิ่งที่ฉันกำลังมองหา: http://www.steppingsoftware.com/
คุณสามารถโหลดไฟล์ bat วางเบรกพอยต์ / เริ่มก้าวผ่านมันในขณะที่เห็นผลลัพธ์และตัวแปรสภาพแวดล้อม
รุ่นการประเมินอนุญาตให้ก้าวผ่าน 50 บรรทัดเท่านั้น ... ใครมีทางเลือกฟรีที่มีฟังก์ชันการทำงานคล้ายกันบ้าง?
ลบ @ECHO OFF และเรียกไฟล์แบตช์ของคุณเปลี่ยนเส้นทางเอาต์พุตทั้งหมดไปยังไฟล์บันทึก ..
c:> yourbatch.bat (พารามิเตอร์ทางเลือก)> yourlogfile.txt 2> & 1
พบได้ที่http://www.robvanderwoude.com/battech_debugging.php
มันได้ผล!! อย่าลืม 2> & 1 ...
พ่อมด
วิธีเดียวที่ฉันคิดได้คือ spinkle รหัสด้วยecho
s และpause
s
คุณพยายามเปลี่ยนเส้นทางผลลัพธ์เป็นไฟล์หรือไม่? เช่น what.bat> log.txt
คุณต้องตรวจสอบให้แน่ใจว่าในกรณีนี้ทุกสคริปต์อื่น ๆ ที่เรียกว่ากำลังเข้าสู่ไฟล์เช่น >> log.txt
นอกจากนี้หากคุณใส่วันที่ / T และเวลา / T ในตอนต้นและตอนท้ายของไฟล์แบตช์นั้นคุณจะได้รับเวลาที่อยู่ ณ จุดนั้นและคุณสามารถแมปเวลาและลำดับการทำงานของสคริปต์ของคุณได้
หรือ .... เรียกไฟล์. bat หลักของคุณจากไฟล์. bat อื่นและส่งออกผลลัพธ์ไปยังไฟล์ผลลัพธ์เช่น
Runner.bat> mainresults.txt
โดยที่ runner.bat เรียกไฟล์. bat หลัก
คุณควรเห็นการดำเนินการทั้งหมดที่ดำเนินการในไฟล์. bat หลักทันที
คุณสามารถใช้cmd \k
ในตอนท้ายของสคริปต์เพื่อดูข้อผิดพลาด มันจะไม่ปิดพรอมต์คำสั่งของคุณหลังจากการดำเนินการเสร็จสิ้น
cmd /K
จริงๆแล้วมันเป็น อย่างไรก็ตามมีอะไรผิดปกติpause
?
ปัญหาที่เกิดขึ้นบ่อยครั้งคือชุดสคริปต์ทำงานโดยดับเบิลคลิกที่ไอคอน เนื่องจากcmd.exe
อินสแตนซ์Command Prompt ( ) ของโฮสติ้งจะยุติลงทันทีที่สคริปต์ชุดงานเสร็จสิ้นจึงไม่สามารถอ่านผลลัพธ์ที่เป็นไปได้และข้อความแสดงข้อผิดพลาด
ในการอ่านข้อความดังกล่าวเป็นสิ่งสำคัญมากที่คุณจะต้องเปิดหน้าต่างพรอมต์คำสั่งอย่างชัดเจนเคลื่อนย้ายไปยังไดเร็กทอรีการทำงานที่เกี่ยวข้องและรันสคริปต์แบตช์โดยพิมพ์พา ธ / ชื่อ
หรือเปิดหน้าต่าง cmd จากนั้นเรียกชุดงานจากที่นั่นผลลัพธ์จะปรากฏบนหน้าจอ
cmd.exe
จะแสดงในกรณี; โฆษณา b) การอ้างสิทธิ์ของคุณไม่ถูกต้องไฟล์แบตช์ไม่ต้องทำงานอาจมีข้อผิดพลาดทางไวยากรณ์ร้ายแรงซึ่งมักจะสร้างข้อความแสดงข้อผิดพลาดของคอนโซล ...