0
我正在嘗試使一個函數在其他字符串中找到一個字符子字符串。我無法讓它工作。 (SET「_gf = _ strif:!!!!〜_CF,1)行不起作用批處理文件在字符串中找到子字符串
注:下面寫的功能爲工作修正版:
@ECHO off
setlocal enabledelayedexpansion
SET "_stri=abcdefghij"
SET "_strf=c"
SET "_s=0"
CALL :instr %_stri%, %_strf%, %_s%
echo Found at %_result%. position >> fun.txt
goto :eof
:instr
SETLOCAL
SET "_strif=%1"
SET "_strff=%2"
SET "_sf=%3"
SET "_cf="
SET "_gf="
FOR /L %%a IN (%_sf%,1,10) DO (
SET "_cf=%%a"
SET "_gf=!_strif:~%%a,1!"
IF "!_gf!"=="!_strff!" GOTO ENDF
)
:ENDF
ENDLOCAL & SET "_result=%_cf%"
好的,這條線現在工作,「if」行也起作用,但函數不返回任何東西,「_cf」變量取了「2」(我在ECHO之後用「:ENDF」檢查過)但不返回。 – 2015-03-02 12:09:13
@kitapmitap,當然,你有'en dlocal'放棄對變量的更改,而'!_cf!'使用延遲擴展,直到執行'set'(不在解析時間)纔會被訪問,變量中沒有值。使用'ENDLOCAL&SET「_result =%_ cf%」'。這樣,該變量將被解析時的值替換。此外,只有在找到角色時才應更改'_cf'。 – 2015-03-02 12:18:27
謝謝。現在它起作用並返回位置。但我仍然不能理解之間的區別!和%。 – 2015-03-02 12:46:08