计算变量中的字符数

计算变量中的字符数

我正在尝试计算一组输出的长度。这对我来说非常重要,我尝试在不启用延迟扩展的情况下仅使用原始批处理来计算这一点。

@echo off
cls
set aaa=asdf
  for %%a in ("%aaa%") do (
  set /a bbb=%%~za + 0 
  echo %bbb%
)

如果我不添加 +0,它就会一直返回缺失的操作数。如果我将 +0 设置为 on,它就会一直返回 ECHO is off。这不是我第一次尝试进行数字回显。我很困惑为什么字母可以正常回显而数字却不能。

答案1

我认为这只%%~z适用于文件,不适用于变量。因此,将变量的内容写入文件,并获取文件大小。

那这个呢:

@echo off
set aaa=asdf

:: Write variable to file
set tmpfile=%TEMP%\%RANDOM%
echo %aaa%> %tmpfile%

:: Determine filesize, subtract 2 bytes for newline
for /F "usebackq" %%a in ('%tmpfile%') do set /a size=%%~za - 2

del %tmpfile%

echo Size: %size%

相关内容