我正在使用for循环并构造要读取的env变量的名称(如abc %% i,其中i是循环变量),并使用延迟扩展来打印它们的值(假设这些env变量具有已经设定了.. ..
echo is dos提供了一个设施来提及要打印的变量的字段宽度,如echo%x:〜-8%将右对齐x的值,字段宽度将为8 ..
但是因为我正在使用延迟扩展,所以!abc %% i:〜-8!似乎不起作用。
关于如何在使用延迟扩展时设置字段宽度的任何想法,??
幸福 迪帕克
答案 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
正如您所料。