Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Скриптовые языки администрирования Windows (http://forum.oszone.net/forumdisplay.php?f=102)
-   -   Удаление последнего символа в каждой строке txt - файла (http://forum.oszone.net/showthread.php?t=250532)

Мария_Айдарова@vk 03-01-2013 19:30 2058295

Удаление последнего символа в каждой строке txt - файла
 
Как можно реализовать с помощью bat - файла удаление последнего символа в каждой строке txt - файла?

Foreigner 03-01-2013 20:49 2058378

Лучше всего с помощью какой-нибудь утилиты для обработки текста. Например с помощью sed
Код:

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

gora 03-01-2013 20:54 2058382

Код:

@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 2058392

Всем спасибо огромное!

Freddy1984 01-08-2019 15:34 2882281

А если нужно удалить первый и последний символ, как это правильно реализовать?
я так понимаю ещё один Set и Echo нужно добавить?

megaloman 01-08-2019 15:40 2882285

Вместо
Цитата:

Цитата gora
!ta:~0,-1! »

Цитата:

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

Freddy1984 01-08-2019 15:50 2882288

Цитата:

Цитата megaloman
скользкий путь »

согласен, но сначала хочется помучать cmd, наступить на всевозможные грабли, а потом заняться делом))

Цитата:

Цитата megaloman
!ta:~1,-1! »

пробовал так, но что то не выходит, от того и написал сюда..
просто последний символ, это пробел в конце строки, он вот и не удаляется.

megaloman 01-08-2019 15:57 2882290

Freddy1984,
Цитата:

Цитата Белое солнце пустыни
Тебя как сразу прикончить или желаешь помучиться?
Хотелось бы конечно помучиться.

:) Если заниматься делом, то дайте Ваш файл.

Freddy1984 01-08-2019 16:02 2882291

Цитата:

Цитата megaloman
Если заниматься делом, то дайте Ваш файл. »

да там всё просто, пробел сначала и в конце каждой строки.
строк несколько сот. понятно что можно тупо через ctrl+h , но подумал я таки про cmd для начала.

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

megaloman 01-08-2019 16:11 2882294

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 2882304

Цитата:

Цитата Freddy1984
да там всё просто, пробел сначала и в конце каждой строки. »

А если два где-то будет?

Freddy1984 01-08-2019 17:30 2882308

Цитата:

Цитата Iska
А если два где-то будет? »

тогда кирдык ))

megaloman 01-08-2019 17:37 2882310

Freddy1984,
Цитата:

Цитата Iska
А если два где-то будет? »

- это реально? А внутри есть пробелы? Что надо, убрать все пробелы в начале и в конце строки?

Freddy1984 01-08-2019 18:22 2882315

Цитата:

Цитата megaloman
Что надо, убрать все пробелы в начале и в конце строки? »

да, и этот вопрос решен, я вас поблагодарил :)

megaloman 01-08-2019 18:23 2882316

Freddy1984, Ранее я делал задачу: убрать по одному символу в начале и в конце строки. Оказалось, что это пробелы, и предположили, что их в начале и в конце строки может быть не один
Цитата:

Цитата 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



Время: 14:50.

Время: 14:50.
© OSzone.net 2001-