Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

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

Ответить
Настройки темы
CMD/BAT - Копирование первой строки из файла

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


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

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


Вложения
Тип файла: 7z broad.7z
(575 байт, 20 просмотров)
Помогите пожалуйста! Есть файл broad.int из него нужно скопировать в файл 1. txt первую строку. Но начать копирование только после 14ого символа в первой строке... То есть в конечном файле должно быть только "Градусы - Кто ты"

Код: Выделить весь код
17051110425000Градусы - Кто ты
Значения первых 14ти символов постоянно меняются.. их нужно игнорировать.. реально ли реализовать это с помощью бат скрипта? Заранее спасибо!

Отправлено: 11:48, 17-05-2011

 

Аватара для El Sanchez

Ветеран


Contributor


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

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


MultiMax,
Код: Выделить весь код
@Echo Off
For /F "Tokens=*" %%A In (broad.int) Do Call :_Func "%%A"
Exit /B 0

:_Func
  Set "Str=%~1"
  If "%Str:~14%"=="" Exit /B
  Set "Str=%Str:~14%"
  Set "Str=%Str:  =$%"
  For /F "Tokens=1 Delims=$" %%A In ("%Str%") Do Echo.%%A>>1.txt
Это сообщение посчитали полезным следующие участники:

Отправлено: 12:48, 17-05-2011 | #2



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

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


Ветеран


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

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


MultiMax,
Код: Выделить весь код
@echo off
1>nul chcp 1251
setlocal

0<broad.int set /p "string="
1>1.txt echo %string:~14%
Это сообщение посчитали полезным следующие участники:

Отправлено: 17:28, 17-05-2011 | #3


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


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

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


Спасибо! Вот только строчка длинная.. ограничить бы как-нибудь ее.. если вправо пролистать, то там пусть к файлу еще... Этот файлик нужен для вывода на радиостанции названия песни Вот что пишет по поводу файла разработчик:

"Во время проигрывания плей-листа в папке, где находится плей-лист, создается файл broad.int. В этом файле находится информация о проигрываемом объекте и 9-ти следующих за ним объектах.

Формат одной строчки файла:

время выхода[12]битовая маска атрибутов[2]текстовая информация[255]полный путь к файлу[255]длительность звучания[8]резервное поле2[247]0x0a

0x0a - символ конца строки
'x' - символ конца файла"

1) Можно ли как-нибудь ограничить количество символов, чтобы копировалось только название песни? В скрипте El Sanchez, удаляются кстати все символы лишние... но на второй и остальных строчках, в первой - нет
2) Возможно это сложно, но был бы оочень и премного благодарен и признателен, если кто-нибудь помог с тем, чтобы скрипт копировал название песни, только если она находится в каталоге E:\Music, если нет, то не обрабатывать, выдавать пустой ткст файл например.

Отправлено: 19:11, 17-05-2011 | #4


Аватара для El Sanchez

Ветеран


Contributor


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

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


Цитата MultiMax:
удаляются кстати все символы лишние »
MultiMax, ведь вы в шапке это и сказали
Цитата MultiMax:
должно быть только "Градусы - Кто ты" »
Цитата MultiMax:
но на второй и остальных строчках, в первой - нет »
MultiMax, неправда. Вот, что у меня на выходе:
Код: Выделить весь код
Hurts - Wonderful Life
Градусы - Кто ты
Gwen, Stefani - The Sweet Escape
Simply Red - Fake
Sean, Jay - Tonight
Future Of Vision - Here Comes The Rain Again
Adriana & Vivien O’Hara - Too Late To Cry
Rickitt, Adam - Everything My Heart Desires
DJ Smash - Moscow Never Sleeps
3OH!3 feat. Kesha - My First Kiss
Цитата MultiMax:
чтобы скрипт копировал название песни, только если она находится в каталоге E:\Music, »
MultiMax, вторую строку заменить на:
Код: Выделить весь код
For /F "Tokens=*" %%A In ('type broad.int^|FindStr /I "E:\Music"') Do Call :_Func "%%A"
Это сообщение посчитали полезным следующие участники:

Отправлено: 20:39, 17-05-2011 | #5


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


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

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


El Sanchez, да, действительно. Спасибо! Скрипт запускается раз в минуту и... в файле 1.txt накапливается информация... можно сделать так чтобы при "обновлении" все подчищалось, как в скрипте Foreigner? И если можно чтобы выводился не целый список, а только первая песенка, остальное пока что не нужно. Но спасибо вам огромное!!!

Отправлено: 22:50, 17-05-2011 | #6


Аватара для El Sanchez

Ветеран


Contributor


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

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


MultiMax,
Код: Выделить весь код
@Echo Off
Set Cnt=0
For /F "Tokens=*" %%A In ('type broad.int^|FindStr /I "E:\Music"') Do Call :_Func "%%A"
Exit /B 0

:_Func
  Set "Str=%~1"
  If "%Str:~14%"=="" Exit /B
  If %Cnt% EQU 1 Exit /B
  Set "Str=%Str:~14%"
  Set "Str=%Str:  =$%"
  For /F "Tokens=1 Delims=$" %%A In ("%Str%") Do Echo.%%A
  Set /A Cnt+=1
Это сообщение посчитали полезным следующие участники:

Отправлено: 10:31, 18-05-2011 | #7


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


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

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


El Sanchez, спасибо! Дописал куда будет сохранять только


@Echo Off
Set Cnt=0
For /F "Tokens=*" %%A In ('type broad.int^|FindStr /I "E:\Music"') Do Call :_Func "%%A"
Exit /B 0

:_Func
Set "Str=%~1"
If "%Str:~14%"=="" Exit /B
If %Cnt% EQU 1 Exit /B
Set "Str=%Str:~14%"
Set "Str=%Str: =$%"
For /F "Tokens=1 Delims=$" %%A In ("%Str%") Do Echo.%%A>>1.txt
Set /A Cnt+=1


Файлик 1.txt не подчищается с каждым запуском скрипта... Накапливается по строчке все больше и больше

Отправлено: 17:41, 18-05-2011 | #8


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


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

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


Сделал вот так...

@Echo Off

del F:\Broad\1.txt
end


Set Cnt=0
For /F "Tokens=*" %%A In ('type broad.int^|FindStr /I "E:\Music"') Do Call :_Func "%%A"
Exit /B 0

:_Func
Set "Str=%~1"
If "%Str:~14%"=="" Exit /B
If %Cnt% EQU 1 Exit /B
Set "Str=%Str:~14%"
Set "Str=%Str: =$%"
For /F "Tokens=1 Delims=$" %%A In ("%Str%") Do Echo.%%A>>1.txt
Set /A Cnt+=1


Но если песня из каталога НЕ music, скрипт показывает файл следующий по списку который из папки... а в эфире-то он не играет пока что Можно ли сделать так, чтобы в случае, если песня не из каталога music, выдавался пустой файл? И самая последняя просьба: помогите пожалуйста сделать так, чтобы весь скрипт выполнялся по кругу каждые 20 секунд, не закрывая своего окошка (Windows Scheduler каждый раз запуская скрипт открывает окно, и оно постоянно всплывает)

Последний раз редактировалось MultiMax, 18-05-2011 в 18:10.


Отправлено: 17:57, 18-05-2011 | #9


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


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

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


Проблема с запуском каждые 20 сек отпала! Помогите пожалуйста сделать, чтобы в случае, если песня не из каталога music, выдавался пустой файл

Отправлено: 19:17, 18-05-2011 | #10



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

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

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
CMD/BAT - [решено] Имя файла из строки копируемого файла. Seryoga204 Скриптовые языки администрирования Windows 20 16-03-2011 21:15
CMD/BAT - [решено] Чтение строки из файла в переменную Николя Скриптовые языки администрирования Windows 42 17-01-2010 19:42
[решено] Удаление строки из файла gregaz AutoIt 2 16-07-2009 18:46
[Вопрос] Svcpack и копирование файла с CD ya158 Автоматическая установка Windows 2000/XP/2003 8 11-11-2008 21:58
Двойное копирование файла с FTP. :( BlackMonk Хочу все знать 3 13-02-2005 09:08




 
Переход