Имя пользователя:
Пароль:
 | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] Вопрос по редактированию строк

Ответить
Настройки темы
CMD/BAT - [решено] Вопрос по редактированию строк

Новый участник


Сообщения: 4
Благодарности: 0

Профиль | Отправить PM | Цитировать


Здравствуйте. Имеется файл с примерным содержанием:
Код: Выделить весь код
#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 )
Но ничего не получается. Заранее спасибо за помощь

Отправлено: 16:15, 20-01-2017

 

Аватара для Elven

Ветеран


Сообщения: 992
Благодарности: 268

Профиль | Сайт | Отправить PM | Цитировать


Код: Выделить весь код
for /f %%i in ('findstr /v ^# file.txt') do echo какой-то_текст %%i >> new_file.txt

Отправлено: 17:28, 20-01-2017 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Новый участник


Сообщения: 4
Благодарности: 0

Профиль | Отправить PM | Цитировать


Цитата Elven:
for /f %%i in ('findstr /v ^# file.txt') do echo какой-то_текст %%i >> new_file.txt »
К сожалению не работает, на выходе пустой файл.

Отправлено: 18:02, 20-01-2017 | #3


Забанен


Сообщения: 793
Благодарности: 260

Профиль | Цитировать


Код: Выделить весь код
@echo off
  setlocal
    set "file=file.txt"
    for /f "delims=" %%i in (
      'findstr /bvrc:"#" "%file%"'
    ) do echo:%%i>>out.txt
  endlocal
exit /b
Это сообщение посчитали полезным следующие участники:

Отправлено: 19:57, 20-01-2017 | #4


Ветеран


Сообщения: 27449
Благодарности: 8088

Профиль | Отправить PM | Цитировать


Цитата 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
Это сообщение посчитали полезным следующие участники:

Отправлено: 20:44, 20-01-2017 | #5


Аватара для Elven

Ветеран


Сообщения: 992
Благодарности: 268

Профиль | Сайт | Отправить PM | Цитировать


Цитата D1kiy:
К сожалению не работает, на выходе пустой файл. »
Работает в рамках поставленной задачи в купе с предложенным примером файла. Разве что пробелы в строке не учел, тогда так:
Код: Выделить весь код
for /f "delims=" %%i in ('findstr /v ^# file.txt') do echo какой-то_текст %%i >> new_file.txt
Цитата Iska:
Крайне желательно упаковывать образец файла в архив, каковой прикладывать к сообщению. »
категорически согласен.
Это сообщение посчитали полезным следующие участники:

Отправлено: 11:26, 21-01-2017 | #6


Ветеран


Contributor


Сообщения: 2735
Благодарности: 1699

Профиль | Отправить PM | Цитировать


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

-------
Даже самая сложная проблема обязательно имеет простое, лёгкое для понимания, неправильное решение. Каждое решение плодит новые проблемы.


Последний раз редактировалось megaloman, 21-01-2017 в 20:18.


Отправлено: 20:08, 21-01-2017 | #7


Ветеран


Сообщения: 27449
Благодарности: 8088

Профиль | Отправить PM | Цитировать


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

Отправлено: 21:19, 21-01-2017 | #8


Ветеран


Сообщения: 1274
Благодарности: 564

Профиль | Отправить PM | Цитировать


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

Отправлено: 03:09, 22-01-2017 | #9



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] Вопрос по редактированию строк

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
VBS/WSH/JS - Скрипт по редактированию реестра с перезагрузкой компьютера PowerZ Скриптовые языки администрирования Windows 0 23-03-2014 12:14
Система - Помогите найти прогу по редактированию реестра. Polyarnik Программное обеспечение Windows 13 19-02-2010 08:52
Скрипт по редактированию профиля пользователя. GreenIce Microsoft Windows NT/2000/2003 0 29-05-2007 14:01
Вопрос по редактированию страниц в mht Alex Si Вебмастеру 1 13-10-2003 03:20




 
Переход