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