2011-11-26 32 views
3

這裏的例子中,你是如何與普通的變量做到這一點:如何將substring命令應用於XP cmd腳本中的變量倍數?

SET _test=123456789abcdef0 
SET _result=%_test:~-7% 
ECHO %_result% 
:: that shows: abcdef0 

但是,與使用雙百分號變量做在開始(如%%A),需要在for循環這樣的變量:

FOR /D %%d IN (c:\windows\*) DO (
    echo %%d 
) 

這個工作,但:

FOR /D %%d IN (c:\windows\*) DO (
    echo %%d:~-7% 
) 

簡單的拷貝:~-7到echo命令

回答

4

替換和子字符串語法僅適用於不適用於參數的變量。

但是,您可以簡單地將該參數複製到一個變量中,然後使用子字符串語法。

setlocal EnableDelayedExpansion 
FOR /D %%d IN (c:\windows\*) DO (
    set "var=%%d" 
    echo !var:~-7! 
) 

您需要延遲擴展,因爲正常的%var%會在解析完整塊時擴展,而不是在執行時。

或者你可以使用call技術,但這是非常緩慢的,並有很多副作用。

FOR /D %%d IN (c:\windows\*) DO (
    set "var=%%d" 
    call echo %%var:~-7%% 
) 
相關問題