使用延迟扩展时的字段宽度
问题描述:
我正在使用for循环并构造要读取的env变量(如abc %% i,其中i是循环变量)的名称,并使用延迟扩展打印出它们的值(假设已经设置了这些env变量)。使用延迟扩展时的字段宽度
echo是dos提供了提供要打印的变量的字段宽度的工具,如echo%x:〜-8%将右对齐x的值并且字段宽度将为8 ..
但是由于我使用延迟扩展,!abc %% i:〜-8!似乎没有工作。
有关如何在使用延迟扩展时设置字段宽度的任何想法,
幸福 迪帕克
答
我不知道谁告诉你的%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
如你所愿。
Thanx for ur insightful answer。我误解了这个构造。这可以 。但我想知道是否有任何方法,我可以左对齐我的输出和设置字段宽度。现在我正在使用一个exe文件(C++),它会为我做这件事(Thanx to stroustrup)。但是这种方法似乎不够雅观,如果有什么方法可以让它和“全剧本”外遇,请给我启迪一下! – Deepak
是的,问另一个问题:-)基本上,它归结为:'set x = hello','set y =%x% paxdiablo
完美的作品! Thanx Pax !!现在是一个优雅的男人! :) – Deepak