Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Скриптовые языки администрирования Windows (http://forum.oszone.net/forumdisplay.php?f=102)
-   -   [решено] как из bat файла дописать символ в текстовый файл? (http://forum.oszone.net/showthread.php?t=199954)

idzs 19-02-2011 20:30 1617215

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

amel27 20-02-2011 06:16 1617413

Цитата:

Цитата idzs
найти в тектовом файле определенную строку »

слишком туманно - что значит "определенную" - по номеру, полному, частичному совпадению или еще как?..

Цитата:

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

при желании можно учесть и это

idzs 20-02-2011 11:08 1617474

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

amel27 20-02-2011 17:26 1617739

как-то так:
Код:

@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 1617854

amel27 большое спасибо! все работает!!!

idzs 21-02-2011 19:43 1618586

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

amel27 22-02-2011 03:49 1618834

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



Время: 16:10.

Время: 16:10.
© OSzone.net 2001-