Вопрос по редактированию строк
Здравствуйте. Имеется файл с примерным содержанием:
Код:
#text
text2
text3
#text4
text5
Мне нужно построчно прочесть файл и если первый символ строки не # записать в другой файл в виде "какой-то_текст строка_из_первого_файла". Тоесть отработав на файле из примера скрипт должен выдать мне:
Код:
какой-то_текст text2
какой-то_текст text3
какой-то_текст text5
Я пробую так:
Код:
set file=file.txt
for %%i in (%file%) do (
set test=%%i
set var=%package:~0,1%
if not "%var%" == "#" echo "какой-то_текст %test%" >> new_file.txt )
Но ничего не получается. Заранее спасибо за помощь
|
Код:
for /f %%i in ('findstr /v ^# file.txt') do echo какой-то_текст %%i >> new_file.txt
|
Цитата:
Цитата Elven
for /f %%i in ('findstr /v ^# file.txt') do echo какой-то_текст %%i >> new_file.txt »
|
К сожалению не работает, на выходе пустой файл.
|
greg zakharov |
20-01-2017 19:57 2704978 |
Код:
@echo off
setlocal
set "file=file.txt"
for /f "delims=" %%i in (
'findstr /bvrc:"#" "%file%"'
) do echo:%%i>>out.txt
endlocal
exit /b
|
Цитата:
Цитата D1kiy
Имеется файл с примерным содержанием: »
|
Крайне желательно упаковывать образец файла в архив, каковой прикладывать к сообщению.
Код:
@echo off
setlocal enableextensions enabledelayedexpansion
>"Result.txt" (
for /f "usebackq eol=# delims=" %%i in ("Sample.txt") do echo Some string %%i
)
endlocal
exit /b 0
|
Цитата:
Цитата D1kiy
К сожалению не работает, на выходе пустой файл. »
|
Работает в рамках поставленной задачи в купе с предложенным примером файла. Разве что пробелы в строке не учел, тогда так:
Код:
for /f "delims=" %%i in ('findstr /v ^# file.txt') do echo какой-то_текст %%i >> new_file.txt
Цитата:
Цитата Iska
Крайне желательно упаковывать образец файла в архив, каковой прикладывать к сообщению. »
|
категорически согласен.
|
Iska,
Цитата:
Цитата Iska
setlocal enableextensions enabledelayedexpansion »
|
Классное решение, но ИМХО, в этом случае это не нужно и даже вредно. Особенно если в тексте есть !
|
megaloman, пакетные файлы вообще не особо предназначены для этого. Подводных камней чуть больше, чем дохрена.
|
D1kiy,
если предположить на минуту что ваше содержимое может измениться на такое:
Код:
#text
text 2&!
(text)3
#text4
;text="5"
то более надежным вариантом будет такой код:
Код:
@echo off
set "f=file.txt"
<"%f%">$ (for /f tokens^=1*^ delims^=[] %%a in ('find /n /v ""') do @set "s=[%%a]%%b"& echo "%%b"|>nul findstr /r ^# || cmd/v/c echo какой-то_текст !s:*]^^=!)& >nul move $ "%f%"
exit
|
Время: 06:55.
© OSzone.net 2001-