簡體   English   中英

如何調試 .BAT 腳本?

[英]How can I debug a .BAT script?

有沒有辦法單步執行 .bat 腳本? 問題是,我有一個構建腳本,它調用了很多其他腳本,我想看看調用它們的順序是什么,這樣我就可以知道我必須去哪里並添加我的修改.

我不知道如何逐步執行 .bat 文件,但您可以使用echopause來幫助調試。

回聲
將在批處理文件中回顯一條消息。 如 ECHO Hello World 在執行時會在屏幕上打印 Hello World。 但是,如果批處理文件的開頭沒有 @ECHO OFF,您還將獲得“ECHO Hello World”和“Hello World”。 最后,如果您只想創建一個空行,請鍵入 ECHO。 在末尾添加句點會創建一個空行。

暫停
提示用戶按任意鍵繼續。

來源:批處理文件幫助

@workmad3:回答有更多關於使用echo命令的好技巧。

另一個有用的資源... DDB:DOS 批處理文件提示

確保腳本中沒有“echo off”語句,並在調用每個腳本后調用“echo on”以重置您錯過的任何腳本。

原因是如果 echo 保持開啟,那么命令解釋器將在執行之前輸出每個命令(在參數處理之后)。 使它在生產中使用看起來非常糟糕,但對於調試目的非常有用,因為您可以看到輸出出錯的地方。

此外,請確保您正在檢查由調用的批處理腳本和程序設置的 ErrorLevels。 請記住,.bat 文件中為此使用了 2 種不同的方法。 如果你調用了一個程序,錯誤級別在 %ERRORLEVEL% 中,而從批處理文件中,錯誤級別在 ErrorLevel 變量中返回,不需要 % 在它周圍。

面對類似的擔憂,我通過簡單的 Google 搜索找到了以下工具:

JPSoft 的“ Take Command ”包括一個批處理文件 IDE/調試器。 他們的簡短演示視頻很好地展示了這一點。

幾個小時以來,我一直在使用試用版。 這是我的第一個拙見:

  • 一方面,它確實允許調試 .bat 和 .cmd 腳本,我現在確信它在某些情況下可以提供幫助
  • 另一方面,它有時會阻塞,我不得不殺死它......特別是在調試下標時(並不總是系統地)......它不顯示“調用堆棧”或“退出”按鈕。

它可以嘗試。

我發現“運行步驟”(win32)軟件完全符合我的要求: http : //www.steppingsoftware.com/

您可以加載 bat 文件,放置斷點/開始逐步執​​行,同時查看輸出和環境變量。

評估版只允許通過 50 行...有沒有人有類似功能的免費替代品?

rem out @ECHO OFF 並調用您的批處理文件將所有輸出重定向到日志文件..

c:> yourbatch.bat(可選參數)> yourlogfile.txt 2>&1

http://www.robvanderwoude.com/battech_debugging.php找到

有用!! 不要忘記 2>&1...

WIZ

我能想到的唯一方法是用echo s 和pause s 編寫代碼。

您是否嘗試將結果重新路由到文件? 就像whatever.bat>log.txt

您必須確保在這種情況下,每個其他被調用的腳本也記錄到文件中,例如 >>log.txt

此外,如果您在該批處理文件的開頭和結尾放置日期 /T 和時間 /T,您將獲得當時的時間,並且您可以映射腳本運行時間和順序。

或者.... 從另一個 .bat 文件調用您的主 .bat 文件並將結果輸出到結果文件,即

runner.bat > mainresults.txt

runner.bat 調用主 .bat 文件的地方

您現在應該會看到主 .bat 文件中執行的所有操作

您可以在腳本末尾使用cmd \\k來查看錯誤。 執行完成后它不會關閉您的命令提示符

一個非常常見的問題是批處理腳本是通過雙擊其圖標來運行的。 由於托管命令提示符 ( cmd.exe ) 實例也會在批處理腳本完成后立即終止,因此無法讀取潛在的輸出和錯誤消息。

要閱讀此類消息,明確打開命令提示符窗口、移動到適用的工作目錄並通過鍵入其路徑/名稱來運行批處理腳本是非常重要的。

或者,打開一個 cmd 窗口,然后從那里調用批處理,輸出將顯示在屏幕上。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM