Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] Вставить слово между текстом

Ответить
Настройки темы
CMD/BAT - [решено] Вставить слово между текстом

Аватара для minutka15

Пользователь


Сообщения: 135
Благодарности: 11

Профиль | Отправить PM | Цитировать


Всем доброго дня
Имеется текстовый файл такого порядка:
1=имя
2=имя
3=имя
и так далее..

Как вставить слово между - например:
1=слово\имя
2=слово\имя
3=слово\имя
То есть нужно вставить одно и тоже слово после =
В начало и в конец строки я могу, но как добавить слово между ?
Буду благодарен за помощь!

-------
We don't call 911


Отправлено: 13:33, 22-11-2022

 

Аватара для minutka15

Пользователь


Сообщения: 135
Благодарности: 11

Профиль | Отправить PM | Цитировать


megaloman
А можно сделать одно действие если в тексте "постоянный справочник.txt" имеется например такое имя:

1=_Саша

Когда такое имя которое начинается с символом _имя выпадет в "непостоянный файл.txt" то мы просто создаем текстовый файл _имя.txt в той же папке.
и это имя не вносим в преобразованный файл.

-------
We don't call 911


Последний раз редактировалось minutka15, 24-11-2022 в 20:52.


Отправлено: 20:28, 24-11-2022 | #11



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

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Ветеран


Contributor


Сообщения: 2708
Благодарности: 1684

Профиль | Отправить PM | Цитировать


Код: Выделить весь код
@Echo Off
cls
	Set "FileIn=Z:\Box_In\непостоянный файл.txt"
	Set "Fsprav=Z:\Box_In\постоянный справочник.txt"
	Set "WordIn=слово\"

	>nul 2>&1 Find "=%WordIn%" "%FileIn%" &&(Echo File "%FileIn%" has already been processed &Pause &Exit /B)

	For %%d In ("%FileIn%") Do (
		FOR /F "usebackq tokens=1* delims==" %%i In (`2^>nul findstr "=_" "%FileIn%"`) DO >"%%~dpd%%j.txt" cd.
	)

	Set /A N=0
	>"%FileIn%.tmp" (FOR /F "usebackq tokens=1* delims==" %%i In (`2^>nul findstr /V "=_" "%FileIn%"`) DO (
		If "%%j"=="" (Echo %%i
		) Else (
			Call Set /A N+=1
			<nul Call Set /P Str=%%N%%=%WordIn%
			FindStr /B /I "%%j " "%Fsprav%" ||Echo %%j
		)
	))
	>nul Move /Y "%FileIn%.tmp" "%FileIn%"
pause
Exit /B

-------
Даже самая сложная проблема обязательно имеет простое, лёгкое для понимания, неправильное решение. Каждое решение плодит новые проблемы.


Отправлено: 16:12, 25-11-2022 | #12


Аватара для minutka15

Пользователь


Сообщения: 135
Благодарности: 11

Профиль | Отправить PM | Цитировать


megaloman
Спасибо большое, однако эти имена вносятся в завершенный список чего следует исключить.
В моем проекте не предусмотрен вариант где можно отменить действие с существующим именем в завершенном списке.
Хотя если поправить в завершенном списке эти имена:
вместо
1=_Саша вписывать F1=1, _Саша превращается в F1
Чтобы все имена с началом _
получались в завершенном списке

F1=1
F2=1
F3=1

Как вариант можно сделать отдельный батник для таких _имя файлов и отдельный завершенный список.
В проекте я могу запустить его второй командой и получить второй список. это не страшно.

-------
We don't call 911


Отправлено: 18:27, 25-11-2022 | #13


Ветеран


Contributor


Сообщения: 2708
Благодарности: 1684

Профиль | Отправить PM | Цитировать


Для начала
Цитата minutka15:
Подготавливаю постоянный файл без "1= 2= 3=" »
Цитата minutka15:
А можно сделать одно действие если в тексте "постоянный справочник.txt" имеется например такое имя:
1=_Саша »
Но вы противоречите сами себе. Я понимаю так:
"постоянный справочник.txt"
Код: Выделить весь код
Аня +дополнительное слово		1
Ася +дополнительное слово		2
Саша +дополнительное слово		3
Вася +дополнительное слово		4
Петя +дополнительное слово		5
Ваня +дополнительное слово		6
Инокентий +дополнительное слово	7
Филипп +дополнительное слово	8
Алиса +дополнительное слово		9
Эллис +дополнительное слово		10
Сергей +дополнительное слово	11
"непостоянный файл.txt"
Код: Выделить весь код
[AllNames]
1=Алиса
2=Саша
3=_Марина
4=третье_имя
5=dfygt3
6=Сергей
7=_Вера
8=ejhgrgej
9=Петя
"непостоянный файл.txt после обработки
Код: Выделить весь код
[AllNames]
1=слово\Алиса +дополнительное слово		9
2=слово\Саша +дополнительное слово		3
3=слово\третье_имя
4=слово\dfygt3
5=слово\Сергей +дополнительное слово	11
6=слово\ejhgrgej
7=слово\Петя +дополнительное слово		5
Как видите, нет там этих строк. Файлы создаются. Мне не надо предлагать, Как решить. Мне надо понимать:
Что Имеем
Что надо получить, а то тихо шифером шурша крыша едет неспеша, приходится фантазировать.

-------
Даже самая сложная проблема обязательно имеет простое, лёгкое для понимания, неправильное решение. Каждое решение плодит новые проблемы.

Это сообщение посчитали полезным следующие участники:

Отправлено: 19:20, 25-11-2022 | #14


Аватара для minutka15

Пользователь


Сообщения: 135
Благодарности: 11

Профиль | Отправить PM | Цитировать


megaloman,
Я извиняюсь.
Код: Выделить весь код
Но вы противоречите сами себе
Я не только себе противоречу но и логике))
Совершенно верно.
Дело в том, что я поправил для себя исключение _ в виде в скрипте в верхней части
а в нижней части забыл поправить
>"%FileIn%.tmp" (FOR /F "usebackq tokens=1* delims==" %%i In (`2^>nul findstr /V "=_" "%FileIn%"`) DO (

вот и стал велосипед изобретать. Как говорится старость не радость...

Все супер, скрипт работает четко и без помех!

-------
We don't call 911


Отправлено: 19:35, 25-11-2022 | #15


Аватара для minutka15

Пользователь


Сообщения: 135
Благодарности: 11

Профиль | Отправить PM | Цитировать


Уважаемый megaloman,
У меня последняя просьба.
В виду того что я тут по своей же вине напортачил, оказалось что для таких 1=_Саша создавать текстовый файл не нужно.
Извиняюсь что ошибся, понял только после дальнейшего анализа. Однако для смогу задействовать такой скрипт если вдруг понадобится.

Все что нужно это задействовать в скрипте второй (Set "WordIn2=слово\") для слов которые начинаются с _имя.
И эти слова в завершенном списке как и все другие, но начальное слово будет отличаться от других.
то есть если у нас
1=слово\Алиса +дополнительное слово
то в
2=слово2\_Имя +дополнительное слово

Я самостоятельно смог бы наковырять второй батник из строчек, однако хотелось бы завершить весь сценарий одним скриптом.

-------
We don't call 911


Отправлено: 22:31, 25-11-2022 | #16


Ветеран


Contributor


Сообщения: 2708
Благодарности: 1684

Профиль | Отправить PM | Цитировать


Код: Выделить весь код
@Echo Off
cls
	Set "FileIn=Z:\Box_In\непостоянный файл.txt"
	Set "Fsprav=Z:\Box_In\постоянный справочник.txt"
	Set "WordIn=слово\"
	Set "WordIn_=выражение\"

	>nul 2>&1 Find "=%WordIn%"  "%FileIn%" &&(Echo File "%FileIn%" has already been processed &Pause &Exit /B)
	>nul 2>&1 Find "=%WordIn_%" "%FileIn%" &&(Echo File "%FileIn%" has already been processed &Pause &Exit /B)


	>"%FileIn%.tmp" (FOR /F "usebackq tokens=1* delims==" %%i In ("%FileIn%") DO (
		If "%%j"=="" (Echo %%i
		) Else (
			Set "WordAdd=%WordIn%"
			Echo %%j|>nul 2>nul FindStr /B "_"&&Set "WordAdd=%WordIn_%"
			<nul Call Set /P Str=%%i=%%WordAdd%%
			FindStr /B /I "%%j " "%Fsprav%" ||Echo %%j
		)
	))
 	>nul Move /Y "%FileIn%.tmp" "%FileIn%"
pause
Exit /B
Примеры файлов
Код: Выделить весь код
Аня +дополнительное слово		1
Ася +дополнительное слово		2
Саша +дополнительное слово		3
Вася +дополнительное слово		4
_Петя +дополнительное слово		5
Ваня +дополнительное слово		6
Инокентий +дополнительное слово	7
_Филипп +дополнительное слово	8
Алиса +дополнительное слово		9
Эллис +дополнительное слово		10
Сергей +дополнительное слово	11
Вера  +дополнительное слово		12
Марина +дополнительное слово	13
Код: Выделить весь код
[AllNames]
1=Алиса
2=Саша
3=_Филипп
4=dfygt3
5=Сергей
6=ejhgrgej
7=_Петя
Код: Выделить весь код
[AllNames]
1=слово\Алиса +дополнительное слово		9
2=слово\Саша +дополнительное слово		3
3=выражение\_Филипп +дополнительное слово	8
4=слово\dfygt3
5=слово\Сергей +дополнительное слово	11
6=слово\ejhgrgej
7=выражение\_Петя +дополнительное слово		5

-------
Даже самая сложная проблема обязательно имеет простое, лёгкое для понимания, неправильное решение. Каждое решение плодит новые проблемы.


Последний раз редактировалось megaloman, 26-11-2022 в 10:56.

Это сообщение посчитали полезным следующие участники:

Отправлено: 10:47, 26-11-2022 | #17


Аватара для minutka15

Пользователь


Сообщения: 135
Благодарности: 11

Профиль | Отправить PM | Цитировать


megaloman,
Вот Спасибо!
После того как это действие выполняется на все 100% - мой проект ожил после долгой спячки.
Как раз то что хотел иметь долгое время но никак не получалось.
Благодарю из глубины души !
Жму руку!

-------
We don't call 911


Отправлено: 15:17, 26-11-2022 | #18


Аватара для minutka15

Пользователь


Сообщения: 135
Благодарности: 11

Профиль | Отправить PM | Цитировать


Цитата megaloman:
@Echo Off
cls
Set "FileIn=Z:\Box_In\непостоянный файл.txt"
Set "Fsprav=Z:\Box_In\постоянный справочник.txt"
Set "WordIn=слово\"
Set "WordIn_=выражение\"
>nul 2>&1 Find "=%WordIn%" "%FileIn%" &&(Echo File "%FileIn%" has already been processed &Pause &Exit /B)
>nul 2>&1 Find "=%WordIn_%" "%FileIn%" &&(Echo File "%FileIn%" has already been processed &Pause &Exit /B)
>"%FileIn%.tmp" (FOR /F "usebackq tokens=1* delims==" %%i In ("%FileIn%") DO (
If "%%j"=="" (Echo %%i
) Else (
Set "WordAdd=%WordIn%"
Echo %%j|>nul 2>nul FindStr /B "_"&&Set "WordAdd=%WordIn_%"
<nul Call Set /P Str=%%i=%%WordAdd%%
FindStr /B /I "%%j " "%Fsprav%" ||Echo %%j
)
))
>nul Move /Y "%FileIn%.tmp" "%FileIn%"
pause
Exit /B »
Если вас не затруднит могли бы вы показать каким образом можно переделать поисковое слово например:
Set "WordIn_=выражение\" где мы ищем первую букву _
Echo %%j|>nul 2>nul FindStr /B "_"&&Set "WordAdd=%WordIn_%"
Заменить на поисковое слово ".chm" в конце слова...
Одним словом вместо поиска значения в начале слова "_" искать только расширения файлов *.chm

-------
We don't call 911


Отправлено: 00:50, 02-12-2022 | #19


Ветеран


Contributor


Сообщения: 2708
Благодарности: 1684

Профиль | Отправить PM | Цитировать


Код: Выделить весь код
@Echo Off
cls
	Set "FileIn=Z:\Box_In\непостоянный файл.txt"
	Set "Fsprav=Z:\Box_In\постоянный справочник.txt"
	Set "WordIn=слово\"
	Set "WordInChm=выражение\"
	Set "Chm=.Chm"

	>nul 2>&1 Find "=%WordIn%"  "%FileIn%" &&(Echo File "%FileIn%" has already been processed &Pause &Exit /B)
	>nul 2>&1 Find "=%WordInChm%" "%FileIn%" &&(Echo File "%FileIn%" has already been processed &Pause &Exit /B)


	>"%FileIn%.tmp" (FOR /F "usebackq tokens=1* delims==" %%i In ("%FileIn%") DO (
		If "%%j"=="" (
			Echo %%i
		) Else (
			>nul FindStr /I /C:"%%j%Chm% " "%Fsprav%"&&(<nul Call Set /P Str=%%i=%WordInChm%&FindStr /I /C:"%%j%Chm%" "%Fsprav%")
	 		>nul FindStr /I /C:"%%j%Chm%" "%Fsprav%"||(
				>nul FindStr /I "%%j " "%Fsprav%"||(Echo %%i=%%j)
				>nul FindStr /I "%%j " "%Fsprav%"&&(<nul Call Set /P Str=%%i=%WordIn%&FindStr /I /C:"%%j" "%Fsprav%")
		))
	))
 	>nul Move /Y "%FileIn%.tmp" "%FileIn%"
pause
Exit /B
Файлы
"непостоянный файл.txt"
Код: Выделить весь код
[AllNames]
1=Алиса
2=Саша
3=Филипп
4=dfygt3
5=Сергей
6=ejhgrgej
7=Петя
"постоянный справочник.txt"
Код: Выделить весь код
Аня +дополнительное слово		1
Ася +дополнительное слово		2
Саша +дополнительное слово		3
Вася +дополнительное слово		4
Петя.chm +дополнительное слово		5
Ваня +дополнительное слово		6
Инокентий +дополнительное слово	7
Филипп.chm +дополнительное слово	8
Алиса +дополнительное слово		9
Эллис +дополнительное слово		10
Сергей +дополнительное слово	11
Вера  +дополнительное слово		12
Марина +дополнительное слово	13
"непостоянный файл.txt" после обработки
Код: Выделить весь код
[AllNames]
1=слово\Алиса +дополнительное слово		9
2=слово\Саша +дополнительное слово		3
3=выражение\Филипп.chm +дополнительное слово	8
4=dfygt3
5=слово\Сергей +дополнительное слово	11
6=ejhgrgej
7=выражение\Петя.chm +дополнительное слово		5

-------
Даже самая сложная проблема обязательно имеет простое, лёгкое для понимания, неправильное решение. Каждое решение плодит новые проблемы.

Это сообщение посчитали полезным следующие участники:

Отправлено: 18:43, 04-12-2022 | #20



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] Вставить слово между текстом

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
2013 - Как в ворде объединить несколько файлов и между ними вставить горизонтальные линии? megagogo Microsoft Office (Word, Excel, Outlook и т.д.) 0 01-03-2015 14:29
Угадай слово ;) perchinka Флейм 395 05-08-2014 07:33
CMD/BAT - Удалить последнее слово в строке AlekseyB. Скриптовые языки администрирования Windows 15 12-09-2013 10:28
C/C++ - Слово написанное больше всех Vunderkind Программирование и базы данных 10 07-11-2010 20:06
Все знают про обьеденение строк ('слово'&'еще слово'), а есть ли способ исключениеня? tweakos AutoIt 3 15-07-2009 09:52




 
Переход