ширина поля при использовании отложенного расширения - PullRequest
1 голос
/ 27 сентября 2011

Я использую цикл for и создаю имена переменных env (например, abc %% i, где i - переменная цикла), которые необходимо прочитать, и использую отложенное расширение для вывода их значений (при условии, что эти переменные env имеют уже установлено) ..

echo is dos предоставляет возможность указать ширину поля переменной, которая будет распечатана, например, echo% x: ~ -8% будет корректно оправдывать значение x, а ширина поля будет 8 ..

Но так как я использую расширение с задержкой,! Abc %% i: ~ -8! не похоже на работу.

Любые идеи о том, как установить ширину поля при использовании отложенного расширения,

Счастье Дипак

1 Ответ

2 голосов
/ 27 сентября 2011

Я не знаю, кто сказал вам, что %x:~-8% будет дополнять вашу переменную, но они неверны, по крайней мере, в версии cmd, которую я использую (XP).

Эта конструкция просто выдаст последние 8 символов, если переменная равна 8 или больше. Если оно меньше 8, вы получите саму переменную без заполнения.

Если вы хотите, чтобы он был дополнен, вы можете использовать что-то вроде:

set y=        %x%
echo %y:~-8%

И, как видно из этого сценария, !abc%%i:~-8! прекрасно работает, когда вы понимаете, что несете ответственность за заполнение:

@setlocal enableextensions enabledelayedexpansion
@echo off
for /f %%i in ('echo 1 ^&^& echo 92') do (
    set var%%i=        %%i
    echo !var%%i:~-8!
)
echo.=====
set var
endlocal

Это выводит:

       1
      92
=====
var1=       1
var92=       92

как и следовало ожидать.

...