Как добавить динамическое количество пробелов в конце строки в пакетном файле

5

Я хочу вывести информацию в файл журнала как таковой

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эквивалент?
Ганди Мэннинг
1
Вы ищете именно DOS или язык Windows cmd.exe?
Гравитация
Я не уверен в разнице, в основном работающей myfile.batтак, что бы она ни работала , вполне мог бы быть язык cmd.exe
Ганди Мэннинг

Ответы:

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 /?из командной строки.

dbenham
источник