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


4

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

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'个空格附加到机器名称的末尾?


愚蠢的我在想 BASH抱歉...我不再使用Windows了 batch/dos/powershell 当量。我相信很快就会有人。
nerdwaller

没关系,你不会碰巧知道 DOS 相当于你吗?
Ghandi Manning

1
您是专门寻找DOS还是Windows cmd.exe语言?
grawity

我不确定区别,基本上是跑步 myfile.bat 所以无论运行什么,很可能是cmd.exe语言
Ghandi Manning

Answers:


6

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

假设您希望您的消息从位置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 /? 从命令提示符。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.