|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] Удалить все знаки в строке после ; |
|
|
CMD/BAT - [решено] Удалить все знаки в строке после ;
|
Новый участник Сообщения: 30 |
Есть текст, который нужно привести в надлежащий вид, для этого нужно удалить все знаки после ; т.е. неудаляем;не удаляем;здесь удаляем весь текст после ; и точку с запятой тоже. Возможно ли такое?
Заранее спасибо. |
|
Отправлено: 12:27, 05-11-2010 |
Ветеран Сообщения: 1273
|
Профиль | Отправить PM | Цитировать |
Отправлено: 13:08, 05-11-2010 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Ветеран Сообщения: 3806
|
Профиль | Отправить PM | Цитировать Для того чтобы привести текст в наждежащий вид не обязательно пользоваться исключительно cmd-скриптами. WSH и PS более полноценно работают с файлами и текстом. Ну и множество текстовых редактором позворяет производить массовые поиск, замену и т.п.
Регулярными выражениями это запишется примерно как замена (^.*);[^;]* на \1 El Sanchez, For поделит по первому знаку-разделителю, а hxygen'у, судя по примеру, требуется убирать всё, что после последнего. Ко всему прочему надо было просто echo %%A, а в таком виде файл не меняется. |
Отправлено: 13:12, 05-11-2010 | #3 |
Googler Сообщения: 3665
|
Профиль | Отправить PM | Цитировать |
Отправлено: 13:26, 05-11-2010 | #4 |
Googler Сообщения: 3665
|
Профиль | Отправить PM | Цитировать до кучи, вариант штатными средствами (увы, только посимвольно):
@echo off SETLOCAL DisableDelayedExpansion (for /f "usebackq delims=" %%l in ("1.txt") do (set "$l=%%l" SETLOCAL EnableDelayedExpansion set $l|find ";">nul&& call :TRIM echo.!$l! ENDLOCAL )) >2.txt ENDLOCAL& EXIT :TRIM set "$c=!$l:~-1!"& set "$l=!$l:~,-1!" if not "!$c!"==";" goto TRIM GoTo :EOF |
|
Отправлено: 14:05, 05-11-2010 | #5 |
Новый участник Сообщения: 30
|
Профиль | Отправить PM | Цитировать Спасибо всем, но amel27 отдельное мерси
![]() |
Отправлено: 14:37, 05-11-2010 | #6 |
Ветеран Сообщения: 1273
|
Профиль | Отправить PM | Цитировать Вдогонку...
![]() Busla, Цитата hxygen:
hxygen, ну а если нужна рекурсия,то @Echo Off Set Source=C:\Source\test.txt SetLocal EnableDelayedExpansion For /F "Tokens=1* Delims=;" %%A In ('Type "%Source%"') Do Call :Func "%%A" "%%B" Move /Y "%Temp%\_tmp" "%Source%" EndLocal GoTo :EOF :Func If "!Str!"=="" (Set Str=%~1) Else (Set Str=!Str!;%~1) Echo.%~2|Find ";" 1>nul&&(For /F "Tokens=1* Delims=;" %%A in (%2) Do Call :Func "%%A" "%%B")||(If Not "!Str!"=="" Echo.!Str!>>"%Temp%\_tmp"&Set Str=) |
|
Последний раз редактировалось El Sanchez, 08-11-2010 в 17:05. Причина: добавил ограничения. Спасибо amel27 за намек Отправлено: 17:19, 05-11-2010 | #7 |
Googler Сообщения: 3665
|
Профиль | Отправить PM | Цитировать Цитата El Sanchez:
@Echo Off SetLocal EnableDelayedExpansion Set SRC=1.txt (For /F "UseBackQ Delims=" %%L In ("%SRC%") Do ( Set "$L=%%L"& Set "$O="& CALL :SUB& Echo.!$O! ))>"%~dpn0.tmp" Copy /y "%~dpn0.tmp" "%SRC%">nul&& DEL "%~dpn0.tmp" Exit :SUB For /F "Tokens=1,2* Delims=;" %%A In ("!$L!") Do ( If "%%B"=="" Set "$O=%%A"& GoTo :EOF If "%%C"=="" Set "$O=!$O!%%A"& GoTo :EOF Set "$L=%%B;%%C"& Set "$O=!$O!%%A;"& GoTo :SUB) - удаляются пустые строки - удаляются множественные ";" (";;;" -> ";") - удаляются символы "!"/ текст между "!" |
|
Отправлено: 10:34, 06-11-2010 | #8 |
Новый участник Сообщения: 4
|
Профиль | Отправить PM | Цитировать amel27, Можно тоже самое, только чтобы удалял текст ДО ИСКОМОГО СЛОВА ??? *(до FIND "...")
@echo off SETLOCAL DisableDelayedExpansion (for /f "usebackq delims=" %%l in ("1.txt") do (set "$l=%%l" SETLOCAL EnableDelayedExpansion set $l|find ";">nul&& call :TRIM echo.!$l! ENDLOCAL )) >2.txt ENDLOCAL& EXIT :TRIM set "$c=!$l:~-1!"& set "$l=!$l:~,-1!" if not "!$c!"==";" goto TRIM GoTo :EOF |
Отправлено: 00:23, 15-11-2010 | #9 |
Googler Сообщения: 3665
|
Профиль | Отправить PM | Цитировать Цитата rapbit90:
|
|
Отправлено: 06:12, 15-11-2010 | #10 |
|
![]() |
Участник сейчас на форуме |
![]() |
Участник вне форума |
![]() |
Автор темы |
![]() |
Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
После сохранения документа - знаки вопроса | Artem-Samsung | Хочу все знать | 1 | 26-09-2010 13:18 | |
Прочее - Как удалить все маршруты из таблицы маршрутизации? | andrystepa | Общий по Linux | 2 | 12-10-2009 14:38 | |
[решено] После лечения от паразитов диски открывается в командной строке | freese | Лечение систем от вредоносных программ | 2 | 31-07-2009 15:11 | |
Разное - Как удалить все учетные записи? | samchik | Наборы обновлений для Windows XP/2003/Windows 7 | 2 | 03-08-2008 16:25 | |
Как удалить все временный файлы (уже после перезагрузки компа)...? | Cobra_1_Stas | Автоматическая установка Windows 2000/XP/2003 | 4 | 01-04-2008 07:14 |
|