[英]How can I source variables from a .bat file into a PowerShell script?
[英]How can I debug a .BAT script?
有沒有辦法單步執行 .bat 腳本? 問題是,我有一個構建腳本,它調用了很多其他腳本,我想看看調用它們的順序是什么,這樣我就可以知道我必須去哪里並添加我的修改.
我不知道如何逐步執行 .bat 文件,但您可以使用echo
和pause
來幫助調試。
回聲
將在批處理文件中回顯一條消息。 如 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/調試器。 他們的簡短演示視頻很好地展示了這一點。
幾個小時以來,我一直在使用試用版。 這是我的第一個拙見:
它可以嘗試。
我發現“運行步驟”(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.