下面這段代碼被剝離所有額外的垃圾,下到剛剛產生錯誤的代碼串,批處理文件壓延特殊字符和引號內FOR循環
)「」是在意外這次。
@echo off
SETLOCAL ENABLEDELAYEDEXPANSION ENABLEEXTENSIONS
Set "regex="(Test_Health=(?!100))""
echo Regex is: %regex%
FOR /L %%I IN (1,1,5) DO (
Set "to_call=call crv.exe "%%I" %regex%"
echo About to call: !to_call!
)
基本上,在真正的腳本,我試圖調用一個命令行工具,它與它潛在的特殊字符,以及正則表達式一個複雜的字符串。
我想出了一個解決辦法,這是%%I
的最後一個引號前加一個插入符號(^
):
Set "to_call=call crv.exe "%%I^" %regex%"
但是,這感覺就像一個髒黑客。我做錯了什麼,我該怎麼做才能在沒有骯髒的破解的情況下獲得理想的行爲?
我並不真正理解爲什麼要設置變量到一個變量,然後使用該變量來執行對另一個命令的調用。我認爲你已經完成了複雜的代碼。 – Squashman
@Squashman只是霰彈槍調試好玩的後果。嘗試在輸入循環和延遲擴展之前/之後檢查變量以及管道到文件與控制檯。它不是試圖高效,而是重新表達行爲。感謝您的輸入! –