我想在变量Code=AAABASDG中找到字符串A并且每次都数一数,如果&;a &;所以结果应该是输出4,因为在Code变量中有4个A
示例代码:
@echo off
set /A C=0
set Code=AAABASDG
for %%i in (%Code%) do IF "%%i"=="A" set /A C=%C%+1
echo %C%
pause
可以获取原字符串A的长度,然后删除"A"并得到结果的长度,最后减去两个长度。
为了方便地获得字符串的长度,您可以将其存储在一个文件中,然后请求文件的%%~Z
大小。
@echo off
setlocal
set "Code=AAABASDG"
> before.txt echo %code%
> after.txt echo %code:A=%
for %%b in (before.txt) do for %%a in (after.txt) do set /A "count=%%~Zb-%%~Za"
echo %count%
该方法的唯一缺点是它不区分大小写:在替换操作
中,大写字母和小写字母都被删除。@echo off
set /A C=0
set "Code=AAABASDG"
:loop
if defined code (
if "%code:~-1%"=="A" set /a C+=1
set "code=%code:~0,-1%"
goto loop
)
echo %C%
使用set "var=value"
设置字符串值-这避免了尾随空格引起的问题。不要分配"
或终端反斜杠或空格。从元素中构建路径名——与直觉相反,这可能会使过程更容易。
批量中的子字符串从%var:~m,n%
中获得,其中,n
为可选;m
是count-of-char -from- begin_of -string,如果为负数则为end。,n
positive = max length to return;Negative = end-position;missing=返回m
后面的全部
下面是一个得到PowerShell帮助的快速示例:
@Echo Off
SetLocal EnableExtensions
Set "Code=AAABASDG"
For /F %%G In ('%SystemRoot%System32WindowsPowerShellv1.0powershell.exe
-NoProfile "[RegEx]::Matches('%Code%','A').Count"') Do Set "C=%%G"
Echo(%C%
Pause