
統計字符串長度的批處理詭異的錯誤卻找不到原因最后由 踏沙行 于 -7-26 14:22代碼一,可以正常運行如下:
代碼二,無法正常運行,其中[方法3]中的echo n=%n%一句根本不執行nclick="copycode($('code0'));">復制代碼
- @echo off
- setlocal enabledelayedexpansion
- set /p str=<a.txt
- ::[方法1]
- set mx=50
- for /l %%a in (0,1,%mx%) do if !str:~%%a,1!== set num=%%a &goto ok
- :ok
- echo 長度=%num%
- ::pause
- ::[方法2]
- set /a st=0
- :loop
- if !str:~%st%,1! neq set /a st+=1&goto loop
- echo,len=%st%
- ::pause
- echo.[方法3]
- set /a n=8192*2,max=1
- set var=
- pause
- for /l %%a in (1 1 14) do (
- if defined var set /a n=var
- echo n=%n%
- pause
- )
不知道錯在哪里了?使用diffy語句全文比較,代碼二前面部分和代碼一是完全一致的nclick="copycode($('code1'));">復制代碼
- @echo off
- setlocal enabledelayedexpansion
- set /p str=<a.txt
- ::[方法1]
- set mx=50
- for /l %%a in (0,1,%mx%) do if !str:~%%a,1!== set num=%%a &goto ok
- :ok
- echo 長度=%num%
- ::pause
- ::[方法2]
- set /a st=0
- :loop
- if !str:~%st%,1! neq set /a st+=1&goto loop
- echo,len=%st%
- ::pause
- echo.[方法3]
- set /a n=8192*2,max=1
- set var=
- pause
- for /l %%a in (1 1 14) do (
- if defined var set /a n=var
- echo n=%n%
- pause
- set /a n/=2
- for %%i in (!n!) do (
- if !str:~%%i,1!== (set /a var=n) else (
- set str=!str:~%%i!
- set /a max+=%%i,var-=%%i
- )
- )
- )
- endlocal
- echo 長度: %max%
- pause

