2011-09-16 65 views
0

我想從一個字符串獲取一個子串,並檢查它是否等於「系統」。我從%% a得到字符串。當我運行該腳本時,出現錯誤「unexpected(」),如果我刪除for循環中的行(「set _varsub ...),錯誤消失,所以我認爲substring命令有一些語法錯誤。誰能告訴我?這個批處理腳本中的語法錯誤是什麼?

for /f "tokens=1,3,4,* delims=: " %%a in ('e:\DeployTools\handle.exe %deploymentdir%\%%i ^| findstr /i pid: ') do @(


     set _varsub=%%a 
     set _varsub=%_varsub:~0,6% 
     if not %_varsubstring%==System (

     // do something 
    ) 

回答

1

嘗試把周圍的變量報價if語句,

如果不是 '%_varsubstring%' == '系統'(...

意外的錯誤是因爲_varsubstring在該點未定義,因此該行的計算結果爲:

如果沒有==系統(

1

就像斯科諾特寫道,你的代碼將失敗,因爲變量沒有定義,
但即使如此,它會失敗,因爲括號內的擴展不適用於percentd。
在你的情況下,你應該使用帶有感嘆號的延遲擴展。

set _varsub=%%a 
set _varsub=!_varsub:~0,6! 
相關問題