使用延迟扩展时的字段宽度

时间:2011-09-27 02:27:51

标签: batch-file formatting dos

我正在使用for循环并构造要读取的env变量的名称(如abc %% i,其中i是循环变量),并使用延迟扩展来打印它们的值(假设这些env变量具有已经设定了.. ..

echo is dos提供了一个设施来提及要打印的变量的字段宽度,如echo%x:〜-8%将右对齐x的值,字段宽度将为8 ..

但是因为我正在使用延迟扩展,所以!abc %% i:〜-8!似乎不起作用。

关于如何在使用延迟扩展时设置字段宽度的任何想法,??

幸福 迪帕克

1 个答案:

答案 0 :(得分:2)

我不知道是谁告诉你,%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

正如您所料。