PDA

Показать полную графическую версию : Bat файл. Извлечь часть строковой переменной с двумя процентами


chaynick
21-06-2023, 09:44
Доброго времени суток!
Чтобы было нагляднее приведу пример:
For /f "tokens=1" %%i in (test.txt) do (
If %%i:~0,3 == abc echo найдено > 1.txt
)
У меня не работает в чем причина?
Вариант %i:~0,3% успешно находит подстроку abc

NickM
21-06-2023, 10:18
Такая "лапша" отработает правильно?
@echo off
setlocal enableextensions enabledelayedexpansion
For /f "tokens=1" %%i in (test.txt) do (
set aa=%%i
set bb=!aa:~0,3!
If !bb! == abc echo найдено >> 1.txt
)

UPD: убрал . после echo

oleg-k41
21-06-2023, 21:00
Увы, эта " лапша" не работает. Опишу кратко задачу: есть текстовый файл в котором одна из строк начинается на abc. Нужно скопировать все строки расположенные ниже в другой текстовый файл.Буду признателен если кто-то откликнется.

NickM
21-06-2023, 21:10
не работает. »
А должна была сработать именно так, как было указано в начальном поcте, но раз задача поменялась, то это уже не имеет значения:

NickM
21-06-2023, 21:33
Ищем первое вхождение подстроки, после пропускаем n-ое количество строк:
@echo off
setlocal enableextensions enabledelayedexpansion
set /a icount=0
For /f "tokens=1" %%i in (test.txt) do (
set /a icount+=1
set aa=%%i
set bb=!aa:~0,3!
if !bb! == abc call :printfile
)

:printfile
For /f "tokens=* skip=%icount%" %%j in (test.txt) do (
echo.%%j
)
exit

Код не блещет изяществом, конечно - как думал, так и писал :sorry:

Anton04
22-06-2023, 10:43
Коллеги, а не переместиться ли Вам в профильную тему?
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows (http://forum.oszone.net/forumdisplay.php?f=102)

oleg-k41
22-06-2023, 11:46
как думал, так и писал
Спасибо. вечером попробую.

<img>




© OSzone.net 2001-2012