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

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

Ответить
Настройки темы
CMD/BAT - [решено] Чтение строки из файла в переменную

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


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

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


Здравствуйте. Т.к. в написании bat файлов нет опыта, необходима помощь. В определенном каталоге по условию появляется текстовый файл Flag.txt. В файле есть только одна строка - это путь до каталога картинок, формата bmp. Нужно в имеющийся рабочий bat файл, который выполняет некоторые действия, добавить строки, которые бы проверяли наличие файла Flag.txt, читали бы содержимое строки пути и копировали бы все картинки из каталога картинок в определеный каталог.
В батнике есть уже:
if exist Out\123.xml xcopy Out\123.xml \\User\In\ /y
Эта строка, при наличии файла, копирует его в каталог по сети. И после нужно добавить что-то типа
:сначала, видимо, определить путь, откуда копировать файлы (это строка в файле Flag.txt), и
if exist Out\Flag.txt xcopy <Здесь нужен путь, который определили>\*.bmp \\User\Image\ /y
Заранее спасибо!

Отправлено: 11:15, 29-01-2009

 

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


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

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


Petya V4sechkin , спасибо за столь скорый ответ.
Сейчас посмотрю что такое Dynamic DNS и с чем его кушать))

Отправлено: 13:20, 22-04-2009 | #21



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

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


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


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

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


Petya V4sechkin , я нашел инфу: принцип Dynamic DNS довольно прост - на своем динамическом хосте устанавливается dyndns-клиент, который периодически "сливает" адрес своего хоста на свой публичный dyndns-сервис, на котором зарегистрирован ваш домен, а этот сервис каждый раз корректирует настройки DNS-зоны в соответствии с изменившимся адресом хоста. Иными словами, сервис осуществляет их периодическую синхронизацию таким образом, чтобы доменное имя всегда соответствовало "гуляющему" IP-адресу вашего хоста.

Только вот у меня нет хоста...
Если всё же возвращаться к нашим BAT-файлам:
Как вытащить нужную строку из txt файла и записать в другой txt файл?
Возможно ли сделать так, чтобы информация об IP-адресе(ipconfig информация,записанная в txt файле) сначала сравнивалась с предыдущей и только в случае её изменения отправлялась на почту?

Отправлено: 13:53, 22-04-2009 | #22



Moderator


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

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


Цитата wander84:
Только вот у меня нет хоста
Читайте документацию и будет у вас хост.

Отправлено: 14:03, 22-04-2009 | #23


Googler


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

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


wander84, если на интерфейсе публичный адрес (что бывает редко) получить IP можно так:
Код: Выделить весь код
@Echo Off

For /F "Tokens=1 Skip=1 Delims={,} " %%i In ('WMIC NICCONFIG Where IPEnabled^=True Get IPAddress^|FindStr "."') Do Call :ParseIP %%i
@Echo IP Address: %$IPAddress%

EXIT

:ParseIP
 Set $IPAddress=%~1
GoTo :EOF
З.Ы. если TCP/IP интерфейс не один, нужно дополнительно указывать в условии его индекс
Это сообщение посчитали полезным следующие участники:

Отправлено: 09:37, 23-04-2009 | #24


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


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

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


amel27, спасибо. Попробуем!

Отправлено: 18:23, 23-04-2009 | #25


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


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

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


amel27, TCP/IP интерфейс не один... Только вот как указывать его?


Код: Выделить весь код
Настройка протокола IP для Windows

Подключение по локальной сети 3 - Ethernet адаптер:

        Состояние сети  . . . . . . . . . : сеть отключена

xx - Ethernet адаптер:

        DNS-суффикс этого подключения . . : 

        IP-адрес  . . . . . . . . . . . . : x.x.x.x

        Маска подсети . . . . . . . . . . : 255.255.255.0

        Основной шлюз . . . . . . . . . . : 

{0C251A4C-8E77-44B1-8B87-B0B2DC6244E4} - PPP адаптер:

        DNS-суффикс этого подключения . . : 

        IP-адрес  . . . . . . . . . . . . : 92.36.108.126

        Маска подсети . . . . . . . . . . : 255.255.255.255

        Основной шлюз . . . . . . . . . . : 92.36.108.126
92.36.108.126 вот он мне нужен!
amel27, в остальном - код отличный! спасибо!

Последний раз редактировалось wander84, 24-04-2009 в 14:33.


Отправлено: 12:40, 24-04-2009 | #26


Googler


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

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


wander84, выполнить в командной строке:
Код: Выделить весь код
WMIC NICCONFIG Where IPEnabled=True Get Index,IPAddress
определить индекс адаптера и подправить условие в батнике (пример для "1"):
Код: Выделить весь код
@Echo Off

For /F "Tokens=1 Skip=1 Delims={,} " %%i In ('WMIC NICCONFIG Where Index^=1 Get IPAddress^|FindStr "."') Do Call :ParseIP %%i
@Echo IP Address: %$IPAddress%

EXIT

:ParseIP
 Set $IPAddress=%~1
GoTo :EOF
Это сообщение посчитали полезным следующие участники:

Отправлено: 07:03, 25-04-2009 | #27


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


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

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


Понял. Получилось. Использую. amel27, Спасибо!

Теперь такая вот задачка стала передо мной:
Создается файл в определенное время. Его имя создается исходя из IP-адреса(полученого выше):
Код: Выделить весь код
echo %$IPAddress%>>C:\%$IPAddress%
Вот он создался-например C:\92.15.67.21
Через промежуток времени(скажем 1 час), необходимо проверить какой сейчас IP и сравнить его с тем что создался ранее (C:\92.15.67.21). И если:
1) эти IP одинаковы(равны), то ничего не делать.
2) эти IP неодинаковы(неравны), то выполнить bat-файл

Пока ломаю голову как сделать проверку...

Отправлено: 18:04, 30-04-2009 | #28


Googler


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

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


Цитата wander84:
необходимо проверить какой сейчас IP и сравнить его с тем что создался ранее (C:\92.15.67.21). И если:
1) эти IP одинаковы(равны), то ничего не делать.
2) эти IP неодинаковы(неравны), то выполнить bat-файл »
вариант на базе предыдущего:
Код: Выделить весь код
@Echo Off

Set $PATH=C:
Set $BATN=C:\Batnik.CMD

For /F "Tokens=1 Skip=1 Delims={,} " %%i In ('WMIC NICCONFIG Where Index^=1 Get IPAddress^|FindStr "."') Do Call :ParseIP %%i
For /F %%i In ('DIR /A:-D/B "%$PATH%\*"^|FindStr /XRC:"[0-9][0-9]*\.[0-9][0-9]*\.[0-9][0-9]*\.[0-9][0-9]*"') Do Set %%i=X

If Not Defined %$IPAddress% Call "%$BATN%"

EXIT

:ParseIP
 Set $IPAddress=%~1
GoTo :EOF

Отправлено: 08:50, 04-05-2009 | #29


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


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

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


Уважаемые эксперты помогите пожалуйста решить проблему. Есть папка с фаилами, которые надо переслать по е-маилу (отдельный файл посылается отдельным е-маилом) после чего переписать в подпапку, у которой название соответствует дате. Пересылать думал Blatom , пока не могу разобраться как Blatu дать в качестве аргумента имя фаила.

Последний раз редактировалось biggiesa, 06-05-2009 в 17:05.


Отправлено: 16:53, 06-05-2009 | #30



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

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

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
[решено] StringRegExpReplace: Конверт. строки атрибутов файла в формат Attrib.exe Creat0R AutoIt 6 14-09-2009 22:52
[решено] Удаление строки из файла gregaz AutoIt 2 16-07-2009 18:46
[решено] Чтение текстового файла с неизвестным именем ZeroCrash AutoIt 4 01-07-2009 19:03
[решено] Чтение-запись битого файла vit777 Видео и аудио: обработка и кодирование 3 19-12-2007 09:45
Shell. Чтение текстового файла по строкам. Delphin911 Общий по Linux 11 07-04-2005 17:58




 
Переход