如何在批处理文件中的字符串末尾附加动态数量的空格

如何在批处理文件中的字符串末尾附加动态数量的空格

我想将信息输出到日志文件中

01/08/2013 14:30 - Dynamic-Machine-Name    - Message starts
02/08/2013 07:12 - DynamicMachineName      - Log entry
02/08/2013 07:14 - Dynamic-PC-Name         - Information here
02/08/2013 08:01 - PC-Name                 - Execution continues
03/08/2013 09:00 - Dynamic-Name            - Message starts
03/08/2013 15:29 - Dynamic-Machine-Name    - Log information
03/08/2013 15:30 - Random-Machine-Name     - Message etc.

但是为了将日志消息对齐到右侧,我需要计算机器名称的长度(我已经完成了),然后从最大长度中减去它以获得数字空格。

我无法弄清楚如何生成一个包含“x”个空格的字符串,或者将这“x”个空格附加到机器名的末尾?

答案1

你甚至不需要计算机器名的长度。你只需要知道消息前需要多少个字符。

假设您希望消息从位置 44 开始。您已经有了时间戳和机器名称字符串。时间戳的宽度是恒定的,但机器名称的宽度是可变的。

创建一个变量,其中包含您的时间戳、后面是您的机器名称以及 43 个空格。然后从结果中取出一个子字符串(仅保留前 43 个字符),并附加您的消息。

@echo off
setlocal
set "spaces=                                           "
set "timestamp=01/08/2013 14:30"
set "machineName=PC-Name"
set "message=Message goes here"
set "line=%timestamp% - %machineName%%spaces%"
set "line=%line:~0,43%- %message%
echo %line%

- 输出 -

01/08/2013 14:30 - PC-Name                 - Message goes here

有关变量子字符串操作(以及搜索和替换)的更多信息,请在命令提示符中键入HELP SET或。SET /?

相关内容