在 Windows 批处理文件中使用 echo 用空格填充文件长度

在 Windows 批处理文件中使用 echo 用空格填充文件长度

我正在 Windows .bat 文件中使用 for 循环来制作列出目录中文件的文本文件。

FOR /R %%G in (*) DO (
ECHO %%~zG %%~nxG >> zzz-list.txt
)

[手机不允许我输入制表符;~z 和 ~nx 之间的空格是 6 个空格,1 个制表符]

输出类似于(同样,没有制表符):

134 zzz-列表.txt
16931 其他文件
3249237 另一个文件
269164509 第三文件

我希望它是(为了便于阅读):

      134
    16931
  3249237
269164509

我需要将 ~z 放入一个变量中,测试长度,然后用正确数量的空格向前填充。理想情况下,脚本会遍历所有文件以查找最大大小,并将其设置为要填充的长度,但我可能乐意将该长度硬编码为一个相当大的大小。(即:每行开头的几个额外空格不会破坏交易)。

我在设置和显示变量时遇到了麻烦,更不用说对它们运行操作了。

尝试过:
SET _var1=%%~nxG
ECHO %_var1%

无论有没有引号,对我来说都不起作用。

答案1

在字符串前面添加空格,然后显示最右边的 12 个字符的示例:

@echo off
setlocal enabledelayedexpansion
for %%N in (1 12 123 1234 12345 123456 1234567 12345678) do (
    set numberstring=                %%N
    echo !numberstring:~-12!
    )

输出为:

       1
      12
     123
    1234
   12345
  123456
 1234567
12345678

相关内容