PDA

Показать полную графическую версию : Удаление последнего символа в каждой строке txt - файла


Мария_Айдарова@vk
03-01-2013, 19:30
Как можно реализовать с помощью bat - файла удаление последнего символа в каждой строке txt - файла?

Foreigner
03-01-2013, 20:49
Лучше всего с помощью какой-нибудь утилиты для обработки текста. Например с помощью sed (http://gnuwin32.sourceforge.net/packages/sed.htm)

sed -i "s/.$//g" 1.txt

gora
03-01-2013, 20:54
@Echo Off
SetLocal EnableDelayedExpansion
Set file=e:\Temp 1\temp.txt
Set newfile=e:\Temp 1\newtemp.txt

(For /F "tokens=* usebackq delims=" %%a In ("%file%") Do (
Set ta=%%a
Echo !ta:~0,-1!
))>"%newfile%"

Мария_Айдарова@vk
03-01-2013, 21:14
Всем спасибо огромное!

Freddy1984
01-08-2019, 15:34
А если нужно удалить первый и последний символ, как это правильно реализовать?
я так понимаю ещё один Set и Echo нужно добавить?

megaloman
01-08-2019, 15:40
Вместо !ta:~0,-1! » !ta:~1,-1!
А вообще-то работа с текстом в CMD - скользкий путь. Лучше что-то другое (vbs, js, PowerShell)

Freddy1984
01-08-2019, 15:50
скользкий путь »
согласен, но сначала хочется помучать cmd, наступить на всевозможные грабли, а потом заняться делом))

!ta:~1,-1! »
пробовал так, но что то не выходит, от того и написал сюда..
просто последний символ, это пробел в конце строки, он вот и не удаляется.

megaloman
01-08-2019, 15:57
Freddy1984, Тебя как сразу прикончить или желаешь помучиться?
Хотелось бы конечно помучиться. :) Если заниматься делом, то дайте Ваш файл.

Freddy1984
01-08-2019, 16:02
Если заниматься делом, то дайте Ваш файл. »
да там всё просто, пробел сначала и в конце каждой строки.
строк несколько сот. понятно что можно тупо через ctrl+h , но подумал я таки про cmd для начала.

2. ага, тоже мой обожаемый фильм))))

megaloman
01-08-2019, 16:11
Freddy1984, Не знаю Вашей задачи, оставил только выдачу на консоль без записи в файл. Попробуйте:@Echo Off
Set "FileIn=Z:\Box_In\Аренда тента тента тента.txt"
For /F "usebackq delims=" %%a In ("%FileIn%") Do (
Set "ta=%%a"
Echo "%%a"
Call Echo "%%ta:~1,-1%%"
)
Pause
Exit /B
Кавычки поставил специально, чтобы можно было сравнить два Echo: что было и что стало

Iska
01-08-2019, 17:09
да там всё просто, пробел сначала и в конце каждой строки. »
А если два где-то будет?

Freddy1984
01-08-2019, 17:30
А если два где-то будет? »
тогда кирдык ))

megaloman
01-08-2019, 17:37
Freddy1984, А если два где-то будет? » - это реально? А внутри есть пробелы? Что надо, убрать все пробелы в начале и в конце строки?

Freddy1984
01-08-2019, 18:22
Что надо, убрать все пробелы в начале и в конце строки? »
да, и этот вопрос решен, я вас поблагодарил :)

megaloman
01-08-2019, 18:23
Freddy1984, Ранее я делал задачу: убрать по одному символу в начале и в конце строки. Оказалось, что это пробелы, и предположили, что их в начале и в конце строки может быть не одинтогда кирдык »@Echo Off
cls
Set "FileIn=Z:\Box_In\Аренда тента тента тента.txt"
For /F "usebackq delims=" %%a In ("%FileIn%") Do Call :Trim "%%a"
Pause
Exit /B

:Trim
Set "ta=%~1"
:Begin
Set "tas=%ta%"
If "%ta:~0,1%"==" " Set "ta=%ta:~1%"
If "%ta:~-1%"==" " Set "ta=%ta:~0,-1%"
If Not "%tas%"=="%ta%" GoTo :Begin
Echo "%~1"
Echo "%ta%"
Exit /B




© OSzone.net 2001-2012