1
當我在.BAT文件IF語句中使用:子句延遲擴展環境變量時,該行無法解析/執行。使用%符號而不是!爲擴展工程。相同的延遲擴展在其他地方起作用,例如ECHO聲明。例如:bat文件enabledelayedexpansion不會在IF語句中擴展
@echo off& setlocal enabledelayedexpansion
set t=abcd
echo !t:~0,2!
if %t:~0,2% == ab echo equal
if !t:~0,2! == ab echo equal
的回聲T:!〜0,2!正確生產:AB
的如果%T:〜0.2%== AB回聲等於正確生產:等於
的如果T:〜0,2! == ab回聲等於發出錯誤:2!在這個時候出乎意料的是
我不明白爲什麼我不能在IF語句中使用延遲擴展和:子句。沒有冒號子句,IF語句內的延遲擴展就可以正常工作。
瞭解不同批次分析器階段的順序欣賞它 - 這解決了我的問題,因爲我是用在這種情況下,字符串處理。仍然可以在數字中頻比較中遇到麻煩,例如設置n = 123&if!n:〜1,2! gtr 5 - 不能將引號括在引號中,因爲這會強制字符串比較。事先使用一個集合並從if語句中刪除延遲擴展修復了這個問題。 –
@PaulH你也可以用逗號移開逗號 – jeb