2017-01-26 4 views
1

У меня есть сценарий, на котором последняя строка Echos из последней строки текстового файла (минус первые 7 символов) в другой файл:Эхо без пробелов?

for /f "delims==" %%a in (c:\file1.txt) do set lastline=%%a 
echo(%lastline:~7%> file2.txt 

Линии выглядеть следующим образом (я захватывая имя только с приведенным выше кодом):

4.53 - Billy 
2.63 - Mark 
12.42 - Tom 

проблема заключается в том, что, если последняя строка начинается с двух цифр перед десятичной запятой. echo все еще работает, но выход включает в себя ПРОСТРАНСТВО между - и именем, поскольку оно пропускает 7 символов. Я должен обслуживать и то, и другое.

Есть ли способ до echo без указания ведущего Пробег? Или я могу добавить строку после этого, которая может удалить все пробелы с file2.txt?

ответ

1

Я бы не попытался удалить ведущее пространство, я бы изменил способ удаления номера. Примените это, чтобы удалить все, вплоть до и включая ПРОСТРАНСТВЕ-ПРОСТРАНСТВО:

echo(%lastline:* - =%> file2.txt 

или лучше синтаксис:

> file2.txt echo(%lastline:* - =% 

Последний вариант лучше для того, чтобы избежать проблем, когда последний символ строки для эха - это одиночная цифра, отделенная от остальной части символом-разделителем, потому что вместе с символом > он представляет собой, например, redirection operator, например 2>.


Просто для полноты картины, чтобы удалить ведущую белое-пространство, используйте:

for /F "tokens=*" %%L in ("%STRING%") do echo(%%L 

Это работает, потому что разделители по умолчанию из for /F являются ПРОСТРАНСТВО и TAB.