我想計算變數的字數
假設變數是abc
內容是12345678
我要檢查是不是9個字
我想到三個辦法
set abc=123456789
setlocal EnableDelayedExpansion
for /l %%i in (0,1,100) do (
set Length=%%i
if "%abc%"=="!abc:~0,%%i!" goto done
)
:done
if "%Length%"=="9" echo Check Pass
pause
set abc=123456789
set chk=0
if not "%abc:~0,9%"=="%abc:~0,10%" set chk /a abc+=1
if "%abc:~0,8%"=="%abc:~0,9%" set chk /a abc+=1
if "%chk%"=="2" echo Check Pass
pause
set abc=123456789
set Length=0
:loop
if "%abc%"=="" goto end
set /a Length+=1
set abc=%abc:~1%
goto loop
:end
if "%Length%"=="9" echo Check Pass
pause
能正常運作 但是我想再精簡一點
於是我去找powershell的語法
從網路上查到兩行指令
一行是"123456789".length
這一行在CMD下用powershell "123456789".length
去執行會被吃掉雙引號導致錯誤
另一行是$str = "123456789"; $str.Length
這一行在CMD下用powershell $str = "123456789"; $str.Length
去執行結果永遠都是1
請問各位大佬該如何讓這兩行powershell指令在CMD正常執行?
或是有什麼更好更精簡的方式獲取字串長度?
用單引號、雙引號
powershell "'123456789'.length"
powershell "$str = '123456789'; $str.Length"
pause
只用雙引號
powershell "\"123456789\".length"
powershell "$str = \"123456789\"; $str.Length"
pause
bat
::0 ~ 255字
setlocal enableDelayedExpansion
set s=123456789
set a=□0□1□2□3□4□5□6□7□8□9□A□B□C□D□E□F
set "$=!%a:□=!!a:□=%!!s!!s!"
set /a len=0x!$:~-512,2!
echo %len%
pause