Войти

Показать полную графическую версию : [решено] как из bat файла дописать символ в текстовый файл?


idzs
19-02-2011, 20:30
Добрый день! при поиске по форуму ничего подходящего не нашёл.
Нужно из бат файла найти в тектовом файле определенную строку, и дописать в её начало символ ;. И ещё один вопрос, не помешает ли поиску символы $ и |уже прописанные в этои строке?

amel27
20-02-2011, 06:16
найти в тектовом файле определенную строку »
слишком туманно - что значит "определенную" - по номеру, полному, частичному совпадению или еще как?..

не помешает ли поиску символы $ и |уже прописанные в этои строке? »при желании можно учесть и это

idzs
20-02-2011, 11:08
Вот строка в текстовом файле, которая более не повторяется- Item01=$(ExecuteRoot)\strm\instshell.dll|IntegrEnabled, нужно через бат файл дописать в начало символ ; т.е. получится ;Item01=$(ExecuteRoot)\str.............

amel27
20-02-2011, 17:26
как-то так:
@echo off

CALL:MAIN file.txt "Item01=$(ExecuteRoot)\strm\instshell.dll|IntegrEnabled"
EXIT/b

:MAIN %file_name% %commenting_line%
::----------------------------------
SETLOCAL DisableDelayedExpansion
(for /f "tokens=* delims=0123456789" %%a in ('type "%~1"^|findstr /n "$"') do (set "$a=%%a"
SETLOCAL EnableDelayedExpansion
if /i "!$a:~1!"=="%~2" (echo ;!$a:~1!) else echo(!$a:~1!
ENDLOCAL
))>"%~dpn0.tmp"
copy /y "%~dpn0.tmp" "%~1" >nul&& del "%~dpn0.tmp"
ENDLOCAL& exit /b

idzs
20-02-2011, 19:40
amel27 большое спасибо! все работает!!!

idzs
21-02-2011, 19:43
amel27 можно ещё один последний глупый вопрос? А как допустим убрать символ ; , если он в этой строке уже вписан вначале (отдельным батником)

amel27
22-02-2011, 03:49
idzs, аналогично:
@echo off

CALL:MAIN file.txt "Item01=$(ExecuteRoot)\strm\instshell.dll|IntegrEnabled"
EXIT/b

:MAIN %file_name% %uncommenting_line%
::----------------------------------
SETLOCAL DisableDelayedExpansion
(for /f "tokens=* delims=0123456789" %%a in ('type "%~1"^|findstr /n "$"') do (set "$a=%%a"
SETLOCAL EnableDelayedExpansion
if /i "!$a:~1!"==";%~2" (echo !$a:~2!) else echo(!$a:~1!
ENDLOCAL
))>"%~dpn0.tmp"
copy /y "%~dpn0.tmp" "%~1" >nul&& del "%~dpn0.tmp"
ENDLOCAL& exit /b




© OSzone.net 2001-2012