Bagaimana cara men-debug skrip .BAT?


96

Apakah ada cara untuk menelusuri skrip .bat? Masalahnya, saya memiliki skrip build, yang memanggil banyak skrip lain, dan saya ingin melihat urutan pemanggilannya, sehingga saya dapat mengetahui ke mana tepatnya saya harus pergi dan menambahkan modifikasi saya .


4dos memiliki debugger bawaan.

Jawaban:


69

Saya tidak tahu bagaimana cara melangkah melalui eksekusi file .bat tetapi Anda dapat menggunakan echodan pausemembantu dengan debugging.

ECHO
Akan menggemakan pesan di file batch. Seperti ECHO Hello World akan mencetak Hello World di layar saat dijalankan. Namun, tanpa @ECHO OFF di awal file batch, Anda juga akan mendapatkan "ECHO Hello World" dan "Hello World". Terakhir, jika Anda hanya ingin membuat baris kosong, ketik ECHO. menambahkan titik di akhir membuat baris kosong.

JEDA
Minta pengguna untuk menekan sembarang tombol untuk melanjutkan.

Sumber: Bantuan File Batch

@ workmad3: jawaban memiliki lebih banyak tip bagus untuk bekerja dengan echoperintah.

Sumber daya lain yang bermanfaat ... DDB: DOS Batch File Tips


1
Saya kira itu adalah satu-satunya pilihan saya.
Vhaerun

18

Pastikan tidak ada pernyataan 'echo off' dalam skrip dan panggil 'echo on' setelah memanggil setiap skrip untuk mengatur ulang semua yang terlewat.

Alasannya adalah jika echo dibiarkan hidup, maka penerjemah perintah akan mengeluarkan setiap perintah (setelah pemrosesan parameter) sebelum menjalankannya. Membuatnya terlihat sangat buruk untuk digunakan dalam produksi, tetapi sangat berguna untuk tujuan debugging karena Anda dapat melihat kesalahan keluaran.

Juga, pastikan Anda memeriksa ErrorLevels yang ditetapkan oleh skrip dan program batch yang disebut. Ingatlah bahwa ada 2 metode berbeda yang digunakan dalam file .bat untuk ini. Jika Anda memanggil sebuah program, tingkat kesalahan dalam% ERRORLEVEL%, sedangkan dari file batch tingkat kesalahan dikembalikan dalam variabel ErrorLevel dan tidak membutuhkan% di sekitarnya.


13

Menghadapi masalah serupa, saya menemukan alat berikut dengan pencarian Google yang sepele:

" Ambil Perintah " JPSoft menyertakan IDE / debugger file batch. Video presentasi singkat mereka menunjukkannya dengan baik.

Saya menggunakan versi uji coba sejak beberapa jam. Inilah pendapat pertama saya yang sederhana:

  • Di satu sisi, ini memang memungkinkan debugging skrip .bat dan .cmd dan saya sekarang yakin ini dapat membantu dalam beberapa kasus
  • Di sisi lain, kadang-kadang memblokir dan saya harus membunuhnya ... khususnya saat debugging langganan (tidak selalu sistematis) .. itu tidak menunjukkan "tumpukan panggilan" atau "keluar" tombol.

Itu membatalkan sebuah percobaan.


1
Ini mungkin harus menjadi komentar
KyleMit

8
@Sukabumi_sukabumi, bisakah kamu menjelaskan kenapa? karena ini adalah solusi mandiri yang berbeda dari yang lain dan itu menjawab pertanyaan asli? bukan karena cukup pendek untuk
memuat

1
Sebenarnya maksud saya mungkin , dalam hal itu bisa berjalan baik. Tapi itu jawaban yang lumayan . Dari bantuan jawaban pusat bagian: Always quote the most relevant part of an important link. Tanpa tautan, jawaban ini larut, yang, sekali lagi, mungkin baik-baik saja, tetapi biasanya jenis saran ad-hoc dari perangkat lunak berpemilik yang tidak teruji ini umumnya paling cocok dengan komentar. Jangan ragu untuk meninggalkannya juga.
KyleMit

8

Saya menemukan perangkat lunak 'langkah berjalan' (win32) melakukan persis seperti yang saya cari: http://www.steppingsoftware.com/

Anda dapat memuat file bat, menempatkan breakpoints / mulai melangkah melewatinya sambil melihat variabel output dan lingkungan.

Versi evaluasi hanya memungkinkan untuk melangkah melalui 50 baris ... Apakah ada yang punya alternatif gratis dengan fungsi serupa?


7
Mereka telah kehilangan domain itu dan mungkin telah gulung tikar. Anda masih dapat mengunduh perangkat lunak evaluasi dari web.archive.org/web/20120421211043/http://… tetapi tidak dapat lagi membeli lisensinya.
twasbrillig

6

keluarkan @ECHO OFF dan panggil file batch Anda mengarahkan ulang SEMUA output ke file log ..

c:> yourbatch.bat (parameter opsional)> yourlogfile.txt 2> & 1

ditemukan di http://www.robvanderwoude.com/battech_debugging.php

BERHASIL!! jangan lupa 2> & 1 ...

AHLI


2

Satu-satunya cara yang dapat saya pikirkan adalah memercikkan kode dengan echos dan pauses.


2

Apakah Anda mencoba mengubah rute hasil ke file? Seperti apapun.bat> log.txt

Anda harus memastikan bahwa dalam kasus ini setiap skrip yang dipanggil juga masuk ke file seperti >> log.txt

Juga jika Anda meletakkan tanggal / T dan waktu / T di awal dan di akhir file batch itu, Anda akan mendapatkan waktu saat itu pada saat itu dan Anda dapat memetakan waktu dan urutan skrip Anda berjalan.


Menulis hasilnya ke file tidak banyak membantu, ada banyak skrip yang dipanggil, dan juga, ada banyak executable yang dieksekusi.
Vhaerun

1
Jika semua skrip dan program lain menulis ke stdin maka semua pesan mereka juga akan dicatat. Jika Anda baru saja menjalankan batch dan melihat banyak pesan berjalan, Anda dapat mengarahkannya ke file log.
Biri

1

Atau .... Panggil file .bat utama Anda dari file .bat lain dan keluarkan hasilnya ke file hasil yaitu

runner.bat> mainresults.txt

Di mana runner.bat memanggil file .bat utama

Anda harus melihat semua tindakan yang dilakukan di file .bat utama sekarang


0

Masalah yang cukup sering terjadi adalah skrip batch dijalankan dengan mengklik dua kali ikonnya. Karena cmd.exeinstans Command Prompt ( ) hosting juga akan berhenti, maka tidak mungkin membaca output potensial dan pesan kesalahan.

Untuk membaca pesan semacam itu, sangat penting bagi Anda untuk secara eksplisit membuka jendela Command Prompt, bermanuver ke direktori kerja yang berlaku dan menjalankan skrip batch dengan mengetikkan jalur / namanya.


0

Anda dapat menggunakan cmd \kdi akhir skrip Anda untuk melihat kesalahan. itu tidak akan menutup command prompt Anda setelah eksekusi selesai


-3

atau, buka jendela cmd, lalu panggil batch dari sana, hasilnya akan ditampilkan di layar.


2
Hal ini membuat begitu banyak asumsi yang salah sehingga tidak menjadi jawaban. mungkin dua yang terbesar adalah bahwa a) file batch diasumsikan menghasilkan output konsol. Tidak harus, dan b) bahwa file batch benar-benar berfungsi
Leliel
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.