如果您想要动态列格式化功能,您可以使用这里的功能。您也可以左右对齐数据列。
@echo off
setlocal
set "filename=ReallyLongFileName.txt"
set "newsize=20,000"
set "unit=300"
call :Format "[30] [20] [10]" "%filename%" "%newsize%" "%unit%"
set "filename=Some Other Long FileName.txt"
set "newsize=200,000"
set "unit=3000"
call :Format "[30] [20] [10]" "%filename%" "%newsize%" "%unit%"
exit /b
REM FUNCTIONS BELOW
:Format Fmt [Str1] [Str2]...
setlocal disableDelayedExpansion
set "fmt=%~1"
set "line="
set "space= "
setlocal enableDelayedExpansion
for %%n in (^"^
^") do for /f "tokens=1,2 delims=[" %%a in (".!fmt:]=%%~n.!") do (
if "!!" equ "" endlocal
set "const=%%a"
call set "subst=%%~2%space%%%~2"
setlocal enableDelayedExpansion
if %%b0 geq 0 (set "subst=!subst:~0,%%b!") else set "subst=!subst:~%%b!"
for /f delims^=^ eol^= %%c in ("!line!!const:~1!!subst!") do (
endlocal
set "line=%%c"
)
shift /2
)
setlocal enableDelayedExpansion
echo(!line!
exit /b
运行这段代码会输出
ReallyLongFileName.txt 20,000 300
Some Other Long FileName.txt 200,000 3000
如果你想右对齐最后一列,只需将 10 更改为 -10,它就会像这样输出。
ReallyLongFileName.txt 20,000 300
Some Other Long FileName.txt 200,000 3000
如果需要,您可以右对齐所有列。因此,将所有值设为负值会输出。
ReallyLongFileName.txt 20,000 300
Some Other Long FileName.txt 200,000 3000