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

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

D1kiy 20-01-2017 16:15 2704918

Вопрос по редактированию строк
 
Здравствуйте. Имеется файл с примерным содержанием:
Код:

#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 )

Но ничего не получается. Заранее спасибо за помощь

Elven 20-01-2017 17:28 2704939

Код:

for /f %%i in ('findstr /v ^# file.txt') do echo какой-то_текст %%i >> new_file.txt

D1kiy 20-01-2017 18:02 2704944

Цитата:

Цитата 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


Iska 20-01-2017 20:44 2704987

Цитата:

Цитата 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


Elven 21-01-2017 11:26 2705083

Цитата:

Цитата D1kiy
К сожалению не работает, на выходе пустой файл. »

Работает в рамках поставленной задачи в купе с предложенным примером файла. Разве что пробелы в строке не учел, тогда так:
Код:

for /f "delims=" %%i in ('findstr /v ^# file.txt') do echo какой-то_текст %%i >> new_file.txt
Цитата:

Цитата Iska
Крайне желательно упаковывать образец файла в архив, каковой прикладывать к сообщению. »

категорически согласен.

megaloman 21-01-2017 20:08 2705169

Iska,
Цитата:

Цитата Iska
setlocal enableextensions enabledelayedexpansion »

Классное решение, но ИМХО, в этом случае это не нужно и даже вредно. Особенно если в тексте есть !

Iska 21-01-2017 21:19 2705177

megaloman, пакетные файлы вообще не особо предназначены для этого. Подводных камней чуть больше, чем дохрена.

alpap 22-01-2017 03:09 2705220

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.

Время: 06:55.
© OSzone.net 2001-