Показать полную графическую версию : [решено] Вопрос по редактированию строк
Здравствуйте. Имеется файл с примерным содержанием:
#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
for /f %%i in ('findstr /v ^# file.txt') do echo какой-то_текст %%i >> new_file.txt »
К сожалению не работает, на выходе пустой файл.
greg zakharov
20-01-2017, 19:57
@echo off
setlocal
set "file=file.txt"
for /f "delims=" %%i in (
'findstr /bvrc:"#" "%file%"'
) do echo:%%i>>out.txt
endlocal
exit /b
Имеется файл с примерным содержанием: »
Крайне желательно упаковывать образец файла в архив, каковой прикладывать к сообщению.
@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
К сожалению не работает, на выходе пустой файл. »
Работает в рамках поставленной задачи в купе с предложенным примером файла. Разве что пробелы в строке не учел, тогда так:
for /f "delims=" %%i in ('findstr /v ^# file.txt') do echo какой-то_текст %%i >> new_file.txt
Крайне желательно упаковывать образец файла в архив, каковой прикладывать к сообщению. »
категорически согласен.
megaloman
21-01-2017, 20:08
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
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.