Форум программистов, компьютерный форум, киберфорум
Batch (CMD/BAT)
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.56/18: Рейтинг темы: голосов - 18, средняя оценка - 4.56
0 / 0 / 0
Регистрация: 13.11.2014
Сообщений: 111

Удалить часть строки вначале и в конце, включая пробелы и спец. символы

27.05.2020, 00:09. Показов 4132. Ответов 11
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте.
Пример файла 1.txt:
C
1
<div style="clear: both; text-align: center;"><img class="aligncenter" src="https://mysite.com/image.jpg" alt="" width="" height="" /></div>
Пример файла 2.txt:
C
1
            <content:encoded>&lt;div style="clear: both; text-align: center;"&gt;&lt;img class="aligncenter" src="https://mysite.com/image.jpg" alt="" width="" height="" /&gt;&lt;/div&gt;
В каждом файле может быть сотни строк.
Необходимо удалить во всех строках всё, кроме самой ссылки
C
1
https://mysite.com/image.jpg

Все ссылки уникальные, а всё что находится до и после них одинаковое. Конец ссылок тоже может отличаться, например .jpg может быть и .png
Результат необходимо записать в тот же файл, удалив предыдущий.
Пересмотрел много скриптов, но проблемы возникают с пробелами в начале строки или с треугольными скобками.
Возможно ли такое реализовать с помощью CMD/BAT? Это был бы самый приемлемый вариант.
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
27.05.2020, 00:09
Ответы с готовыми решениями:

Удалить вначале строки пробелы и в конце кроме первого
Собственно из &lt;пробел&gt;мама&lt;пробел&gt;&lt;пробел&gt; должно получиться: мама&lt;пробел&gt; есть условие что реплейтиться должно на пустую...

Удалить повторяющиеся пробелы, также пробелы в начале и в конце строки (ассемблерная вставка)
Написать ассемблерную вставку, реализующую следующую обработку строки: согласно варианту. Оформить ее в виде отдельной функции....

Откорректировать файл, удаляя пустые строки, пробелы в конце и вначале строк и оставляя между словами по одному пробелу
Помогите пожалуйста. Задание. Дан текстовый файл Т. Откорректировать его, удаляя пустые строки, пробелы в конце и вначале строк и...

11
4340 / 2130 / 661
Регистрация: 26.04.2015
Сообщений: 6,823
27.05.2020, 04:51
Лучший ответ Сообщение было отмечено marianoredondo как решение

Решение

bat запускать из папки с 1.txt, 2.txt, ...
Windows Batch file
1
2
3
4
5
6
7
8
@echo off
for %%f in (*.txt) do (
 for /f usebackq^ tokens^=6^ delims^=^" %%a in ("%%f") do (
  if not "%%a"=="" >>$ (<nul set /p="%%a"& echo:)
 )
 if exist $ >nul move $ "%%f"
)
pause
1
 Аватар для volodin661
6789 / 2286 / 348
Регистрация: 10.12.2013
Сообщений: 7,895
27.05.2020, 08:25
Цитата Сообщение от marianoredondo Посмотреть сообщение
Возможно ли такое реализовать с помощью CMD/BAT? Это был бы самый приемлемый вариант.
конечно!
ничего лучше, чем cmd, человечество не изобрело.
Windows Batch file
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
@@  IF EXIST "__%~N0.exe" ( "__%~N0.exe" %* ) & (EXIT /B ERRORLEVEL) 
@@  FOR /F %%X IN ('DIR /B /S %WINDIR%\Microsoft.NET\Framework\CSC.EXE') DO @@(SET COMPILER=%%X)
@@  IF NOT DEFINED COMPILER (ECHO No .NET specific compiler presents in your computer !!!) & ( ECHO Goodbye !!! ) & ( EXIT/B -1 )
@@  FINDSTR /B /VC:@@  "%~F0" > "%~N0.cs"
@@  %COMPILER%  /OUT:"__%~N0.exe" /TARGET:exe "%~N0.cs"
@@  IF EXIST "__%~N0.exe" (ECHO Executable file __%~N0.exe created !!! ) & (ECHO Run %~N0 again !!!)  
@@  EXIT/B ERRORLEVEL
 
using System;
using System.IO;
using System.Text.RegularExpressions;
 
class ZZ
{
static void Main( string[] args )
{
    string filename;
    if ( args.Length > 0 ) {
        filename = args[0];
    }
    else {
        Console.Write("Enter input file name: ");
        filename = Console.ReadLine();
    }
    try {
        foreach ( var line in File.ReadLines(filename))
        {
            Match m = Regex.Match(line, "src=\"(?<url>[^\"]+)");
            if (m.Success) 
                Console.WriteLine(m.Value);
        }
    } catch ( Exception e ) {
        Console.WriteLine( e.Message );
    }
}
}
1
0 / 0 / 0
Регистрация: 13.11.2014
Сообщений: 111
27.05.2020, 21:46  [ТС]
alpap,
Цитата Сообщение от alpap Посмотреть сообщение
bat запускать из папки с 1.txt, 2.txt, ...
Чудесный компактный код и прекрасно работает в двух файлах! Благодарю!

volodin661,
Цитата Сообщение от volodin661 Посмотреть сообщение
ничего лучше, чем cmd, человечество не изобрело.
Windows Batch file
А здесь целая поэма! Ваш код я так и не опробовал, но думаю, что он тоже великолепно работает. Просто я привык к более простым и понятным для моего очень скоромного уровня кодам. И вам большое спасибо.

Друзья, извините что не по теме, небольшой вопросик: Почти целый день пытаюсь смастерить регулярное выражение, которое бы производило поиск и замену слова old на new, но не во всем тексте, а только в части текста которая начинается после слова features. Ну никак не получается. Пол интернета перерыл, пытался склеивать какие-то части, которые находил на разных форумах, но так ничего и не получилось. Можете помочь.

Пример файла:
C
1
2
3
4
5
6
7
old new new
old new old new 
old new new new old
old old features new old new
old new new new old old old 
new old new old 
new old old
Результат должен быть таким:
C
1
2
3
4
5
6
7
old new new
old new old new 
old new new new old
old old features new new new
new new new new new new new 
new new new new 
new new new
0
4340 / 2130 / 661
Регистрация: 26.04.2015
Сообщений: 6,823
27.05.2020, 22:22
Цитата Сообщение от marianoredondo Посмотреть сообщение
замену слова old на new, но не во всем тексте, а только в части текста которая начинается после слова features
ну здесь понятно:
Цитата Сообщение от marianoredondo Посмотреть сообщение
old old features new old new
Цитата Сообщение от marianoredondo Посмотреть сообщение
old old features new new new
любое old после features превращается в new
---
а почему тут:
Цитата Сообщение от marianoredondo Посмотреть сообщение
old new new new old old old
Цитата Сообщение от marianoredondo Посмотреть сообщение
new new new new new new new
произошли изменения? Или надо чтобы после features не только в строке, но и далее по тексту все поменялось? Видимо так.
Но чтобы поменять так как вы хотите (а, вероятно будет что-то почуднее чем просто old и new), то это никак не cmd и
Цитата Сообщение от marianoredondo Посмотреть сообщение
Просто я привык к более простым и понятным для моего очень скоромного уровня кодам
придется отвыкать и начинать разбирать коды от volodin661.
0
0 / 0 / 0
Регистрация: 13.11.2014
Сообщений: 111
27.05.2020, 22:50  [ТС]
alpap,
Цитата Сообщение от alpap Посмотреть сообщение
но и далее по тексту все поменялось?
Да, именно так. Выше я написал а только в части текста которая начинается после слова features, подумав, что этого будет достаточно, что речь идет от определенного слова и до конца текста, а не строки.
Может подскажите, где можно найти решение? Понимаю, что так можно реализовать, но никак не могу состыковать нужные значки воедино.

Добавлено через 7 минут
Цитата Сообщение от alpap Посмотреть сообщение
это никак не cmd
Да, это не cmd. просто обратился за помощью здесь от безысходности!
0
3449 / 1110 / 494
Регистрация: 29.05.2016
Сообщений: 4,566
28.05.2020, 11:05
marianoredondo, здравствуйте, а не подойдёт решение, которое поменяет old на new со строки, в которой фигурирует слово features до конца текста, но включая и эту строку?
0
4340 / 2130 / 661
Регистрация: 26.04.2015
Сообщений: 6,823
28.05.2020, 12:20
Karen87, надо уточнить у ТС
может ли быть строка из
было : old new new new old old old
стало: new new new new new new new
---
быть такой
было: "old" new new!old^new oldold <old>
0
3449 / 1110 / 494
Регистрация: 29.05.2016
Сообщений: 4,566
28.05.2020, 12:44
marianoredondo, решение исключительно для Вашего примера:
Windows Batch file
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
@echo off
for /f "tokens=1,2 delims=:" %%a in ('findstr /n /rc:" features " "1.txt"') do (
    call :step_1 "%%a" "%%b"
)
pause
exit
:step_1
for %%a in (%~2) do (
    if not %%a==features (
        set /A count+=1
    ) else (
        set /A count+=1
        call :step_2 %1
    )
)
:step_2
set /A number_string=%1+1
sed -i "%~1s/old/new/%count%g" "1.txt"
sed -i "%number_string%,$ s/old/new/g" "1.txt"
exit /b
Добавлено через 3 минуты
Если содержимое текстового файла примерно такое как показал alpap, то я умываю руки. Поэтому лучше сразу покажите образец боевого файла, чтобы я и другие могли оценить свои возможности

Добавлено через 5 минут
Примечание.
1.txt - файл с содержимым, которое Вы привели в качестве примера. Кладёте его рядом с батником или прописываете полный к нему
0
3449 / 1110 / 494
Регистрация: 29.05.2016
Сообщений: 4,566
28.05.2020, 12:51
Утилита sed во вложении. Кидаете в папку C:\windows\system32
Вложения
Тип файла: zip sed.zip (208.3 Кб, 1 просмотров)
0
3449 / 1110 / 494
Регистрация: 29.05.2016
Сообщений: 4,566
28.05.2020, 13:24
В предыдущем варианте кода грубая ошибка. Исправленный вариант:
Windows Batch file
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
@echo off
for /f "tokens=1,2 delims=:" %%a in ('findstr /n /rc:" features " "1.txt"') do (
    call :step_1 "%%a" "%%b"
)
pause
exit
:step_1
for %%a in (%~2) do (
    if %%a==old (
        set /A count+=1
    )
    if %%a==features (
        set /A count+=1
        call :step_2 %1
        exit /b
    )
)
:step_2
set /A number_string=%1+1
sed -i "%~1s/old/new/%count%g" "1.txt"
sed -i "%number_string%,$ s/old/new/g" "1.txt"
exit /b
0
0 / 0 / 0
Регистрация: 13.11.2014
Сообщений: 111
05.06.2020, 20:38  [ТС]
Цитата Сообщение от Karen87 Посмотреть сообщение
В предыдущем варианте кода грубая ошибка. Исправленный вариант:
Друг, большое спасибо за помощь. Я задал мой вопрос в этой ветке от безысходности.
Регулярное выражение нужно было для работы внутри определённой программы.
Вот здесь мне помогли решить мой вопрос.
В любом случае спасибо оказанную помощь!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
05.06.2020, 20:38
Помогаю со студенческими работами здесь

Откорректировать файл, удаляя пустые строки, пробелы в конце и вначале строк и оставляя между словами по одному пробелу
Дан текстовый файл Т. Откорректировать его, удаляя пустые строки, пробелы в конце и вначале строк и оставляя между словами по одному ...

Откорректировать файл, удаляя пустые строки, пробелы в конце и вначале строк и оставляя между словами по одному пробелу
Дан текстовый файл Т. Откорректировать его, удаляя пустые строки, пробелы в конце и вначале строк и оставляя между словами по одному...

Удалить в текстовом документе пробелы и символы табуляции в конце строк
Здравствуйте, ребята. Мне нужна на завтра написать программу, а иначе будут проблемы в университете. Будет очень обидно если из-за одной...

Удалить пробелы в начале и конце строки
Удалить группу пробелов, с которых, возможно начинается и заканчивается строка строки читаются из файла и выводятся в файл Разрешено...

Удалить пробелы в начале и в конце строки
Задали в универе программу именно на FASM, помогите кто сможет. Задана строка, удалить из неё пробелы в начале и в конце строки и вывести...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11680&amp;d=1772460536 Одним из. . .
Реалии
Hrethgir 01.03.2026
Нет, я не закончил до сих пор симулятор. Эта задача сложнее. Не получилось уйти в плавсостав, но оно и к лучшему, возможно. Точнее получалось - но сварщиком в палубную команду, а это значит, в моём. . .
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
SDL3 для Web (WebAssembly): Сборка библиотек: SDL3, Box2D, FreeType, SDL3_ttf, SDL3_mixer и SDL3_image из исходников с помощью CMake и Emscripten
8Observer8 27.02.2026
Недавно вышла версия 3. 4. 2 библиотеки SDL3. На странице официальной релиза доступны исходники, готовые DLL (для x86, x64, arm64), а также библиотеки для разработки под Android, MinGW и Visual Studio. . . .
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru