Я пытаюсь рассчитать длину вывода из набора. Это очень важно для меня, я пытаюсь рассчитать это без включения delayaedexpansion просто сырой партии.

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

Если я не добавлю +0, он будет возвращать пропущенный операнд. Если я включу +0, он продолжит возвращаться, ECHO выключен. Это не первый раз, когда я пытался сделать числовое эхо. Я не понимаю, почему буквы будут отображаться эхом, а цифры - нет.

1 ответ1

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%

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .