Variables 不同的空间数取决于变量
我正在尝试创建一种类似以下内容的列表:Variables 不同的空间数取决于变量,variables,batch-file,space,Variables,Batch File,Space,我正在尝试创建一种类似以下内容的列表: echo thing1 thing2 echo. echo %var% %var1% echo %var% %var1% rem and so on 然后使用for循环列出目录中的文本文件和如下信息: echo thing1 thing2 echo. echo %var% %var1% echo %var% %var1% rem and
echo thing1 thing2
echo.
echo %var% %var1%
echo %var% %var1%
rem and so on
然后使用for循环列出目录中的文本文件和如下信息:
echo thing1 thing2
echo.
echo %var% %var1%
echo %var% %var1%
rem and so on
但是,不管变量的长度是多少,总有11个空格,这会使它与头稍有偏差
我知道我可以编写一些代码来检测长度,并在变量中保存一些空格,然后将其添加进去
但我只是想知道是否还有其他更简单的方法。这里没有提到字符串是如何精确提取的,所以我将把这个留给您。 下面是如何在两个变量之间设置空格,结果将具有固定长度
@echo off
rem http://ss64.org/viewtopic.php?id=424
set max_len=25
set "var11=thing1"
set "var12=thing2"
set "var21=thing1xxxxxx"
set "var22=thing2"
set "var31=thing1xxxxxx"
set "var32=thing2"
call :setSpaces var11 var12
call :setSpaces var21 var22
call :setSpaces var31 var32
goto :eof
:setSpaces var1 var2 [RtnVar]
setlocal EnableDelayedExpansion
set "var1=!%~1!"
set "var2=!%~2!"
call :strlen0 var1 len1
call :strlen0 var2 len2
set /a needed_spaces=%max_len%-%len1%-%len2%
rem echo %needed_spaces%
set "spaces="
for /l %%a in (1;1;%needed_spaces%) do (
set "spaces=!spaces! "
)
set line=%var1%%spaces%%var2%
endlocal&if "%~3" neq "" (set %~3=%line%) else echo %line%
exit /b 0
:strlen0 StrVar [RtnVar]
setlocal EnableDelayedExpansion
set "s=#!%~1!"
set "len=0"
for %%N in (4096 2048 1024 512 256 128 64 32 16 8 4 2 1) do (
if "!s:~%%N,1!" neq "" (
set /a "len+=%%N"
set "s=!s:~%%N!"
)
)
endlocal&if "%~2" neq "" (set %~2=%len%) else echo %len%
exit /b
这取决于要创建的列表文件:稍后在文本编辑器中打开的带有固定列的文本文件*.txt,或稍后在电子表格应用程序中打开的文件*.csv。