2012-08-01 58 views
2

我想運行失敗的腳本。我已經將問題隔離爲一個簡單的TYPE命令。這裏是代碼該命令的語法不正確TYPE命令

IF NOT [%1]==[] ECHO Appending this log to %1 
IF NOT [%1]==[] TYPE C:\test.log >> %1 

正如你所看到的,我想要做的就是將日誌文件複製到指定的位置,如果它被指定。如果沒有指定額外的日誌文件,腳本也應該運行。

,因爲它看起來是正確的,我已經嘗試了不同的,如果一個參數傳入things.The腳本運行良好,我不能弄明白

編輯:我想呼應這一行,但好像IF NOT [] == [] TYPE C:\ test.log 1 >>

+1

+1使用ECHO來幫助調試 - 這是解決問題所需的關鍵信息。 – dbenham 2012-08-01 19:40:26

回答

2

當%1爲空時,腳本失敗,因爲整個IF語句必須具有有效語法,即使IF計算結果爲false,沒有得到執行。

您可以通過重定向到"%~1"而不是%1來解決問題。需要~來去除可能已經存在於該值中的任何封閉引號。重定向到""是有效的語法。它會因運行時錯誤而失敗,但不會出現語法錯誤。但是如果%1爲空,它不會被執行,所以沒關係。

我會在中頻條件下使用"%~1"而不是[%1]:它更健壯一點。

我還將重構代碼以使用單個IF,但這更多是風格問題。

if not "%~1"=="" (
    echo Appending this log to %1 
    type c:\test.log >>"%~1" 
) 
+0

非常感謝!這很好用!我想知道爲什麼我沒有在我看過的任何教程中遇到過這種情況(我剛剛開始使用腳本) – 2012-08-01 19:52:57