沒有直接的方法來做到這一點。但創建一個並不是不可能的。
由於Windows XP/Vista/7的出來的good'ole一套DOS批處理命令中得到了極大的提升,雖然不是很多使用它們,甚至RTFM(FOR /?
?)
所以我在這裏給你,一個簡單的純批TRACER是利用FOR /F
線解析分支:
@ECHO OFF
FOR /F "delims=" %%L IN (%1) DO (
CLS
ECHO __________________________________________________
ECHO ENV. VARIABLES *BEFORE*
SET
ECHO __________________________________________________
ECHO LINE
ECHO %%L
ECHO __________________________________________________
ECHO Hit any key to execute the line ...
PAUSE > NUL
ECHO __________________________________________________
ECHO EXECUTE
%%L
ECHO __________________________________________________
ECHO Hit any key to fetch the next line...
PAUSE > NUL
)
ECHO END OF FILE
你可以把它作爲一個開始,當你去修改它。
這裏是你如何使用它:
DEBUG.BAT TEST.BAT
而且我還會給你一個測試文件來嘗試一下:
@ECHO OFF
ECHO Hello World!
SET aaa=1
SET bbb=2
ECHO Doing step 2
SET aaa=
SET ccc=3
ECHO Doing step 3
SET bbb=
SET ccc=
ECHO Finished!
這DEBUG.BAT
不過的事情了,由於它的簡單性,有一些限制但是如果你在那裏打擊足夠的BATCH-fu,可以解決它。
- 它不能處理多路塊 ::這可以圍繞由具有
FOR
命令解析令牌,並建立以線條爲他們在工作和IF
它遇到了一個開括號,只轉儲括號阻止內容到一個臨時文件,然後調用自己的臨時文件,例如DEBUG tempfile.bat
- 無法處理跳轉 ::您當然可以,做一個
IF
檢查了GOTO label
然後做一個FOR /F
解析出標籤本身,那麼也許使用第二個參數的DEBUG.BAT
%2
以指定標籤跳轉至,在這種情況下,如果指定了這個參數,只需旋轉FOR /F
,直到所需的標籤進入視圖,然後在下一行繼續正常調試。
- 有從單一
SET
::只是你與SET > before.txt
和之後的事情做了什麼,但這樣做的每一行,然後運行該文件CMD線DIFF工具的信息太多(很多可在互聯網)。然後你會得到自上一步以來變化的每個變量的DIFF。你甚至可以避免env。變量混亂在SETLOCAL
和ENDLOCAL
在那裏,然後你只會得到本地設置...但YMMV。
那些是一些。如果你已經發現了一些顯示停止的限制或者任何增強功能可以幫助你修復最後一個bug,請隨時通知我(通過評論),如果可以的話,我會盡力幫助你。
希望這會有所幫助。
在PowerShell中重寫它們。它具有調試功能。您還可以使用Idera出色的「PowerShell Plus」產品,並獲得互動調試體驗。 – 2010-03-02 19:57:24
@John:我認爲OP的問題是更多的理解批處理文件是否重寫了另一種語言。所以你有點再次使相同的點:) – Joey 2010-03-02 20:00:08
你可以從進程監控http://technet.microsoft.com/en-us/sysinternals/bb896645.aspx,但其餘的一些信息。我希望你找到一些東西,但我不樂觀。 – 2010-03-02 20:04:00