Ru-Board.club
← Вернуться в раздел «Microsoft Windows»

» Задачи на bat-файлах 8

Автор: igor_andreev
Дата сообщения: 31.05.2010 10:59
wolf0425
А если проверку наличия string1 и string2 попробовать сделать перед запуском sed?
Типа find "string1" && find "string2" && sed ...

Добавлено:
В faq еще глянь на 4.11, 4.12, 4.13. Особенно 4.11, там скрипт файл правда нужно отдельным файлом писать(sed -f script.sed)
http://www.faqs.org/faqs/editor-faq/sed/
может получится применить в твоем случае?
Автор: wolf0425
Дата сообщения: 31.05.2010 11:48

Цитата:
А если проверку наличия string1 и string2 попробовать сделать перед запуском sed?

толку то, я заранее знаю что обе подстроки есть - только в случае когда string2 идет раньше string1 удаляться ничего не должно

вся проблема в том, что /start/,/end/ - селектирует строки до /end/ ИЛИ ДО КОНЦА ФАЙЛА.
4.11 страдает совершенно тем же, а моего куцего понимания языка недостаточно чтоб прикрутить проверку на присутствие в блоке строки /end/ или отсутствие строки $ перед удалением строк.


Добавлено:

Цитата:
там скрипт файл правда нужно отдельным файлом
там это только для комментариев делается, а вообще не проблема.
Автор: sjsash
Дата сообщения: 31.05.2010 13:54
Уважаемые форумчане подскажите как с помощью bat-ника узнать есть ли в папке ( //server/XML/ ) файлы ( *.xml ) с атрибутом "архивный"? Если нет вывести сообщение "мол нет таких", если есть скопировать в папку ( D:\Import_XML\ ).
На сервере должны быть файлы *.xml накопленые за последние 3 месяца и нужно понять есть ли новые (с атриб. архивный) после копирования атриб. архивный снимается и файлы остаются на сервере как резервные копии.

Как проверить есть ли файлы *.xml понятно
Код: if exist "//server/XML/*.xml"
Автор: wolf0425
Дата сообщения: 31.05.2010 14:02

Цитата:
как с помощью bat-ника узнать есть ли в папке ( //server/XML/ ) файлы ( *.xml ) с атрибутом "архивный"? Е

наверно так:

Код: dir /b /aa-d //server/XML/*.xml 1>nul 2>nul && (xcopy /y /m //server/XML/*.xml D:\Import_XML\) || (echo Files not found)
Автор: sjsash
Дата сообщения: 31.05.2010 14:31
wolf0425
Вроде оно, но выводит сообщение хоть есть, хоть нет атрибута. И еще как выполнить условие если есть - то
Код: xcopy "//server/XML/*.xml" "D:\Import_XML\*.xml" /z /a /v /q
Автор: wolf0425
Дата сообщения: 31.05.2010 14:36

Цитата:
выводит сообщение хоть есть, хоть нет атрибута.
а странно, не должно бы.
перепиши на простое ветвление, раз с однострочностью проблемы
dir /b /aa-d //server/XML/*.xml 1>nul 2>nul && goto :exist


Цитата:
И еще как выполнить условие если есть - то
ключик /a тебе там точно нужен? с ним то атрибут то не снимется
Автор: sjsash
Дата сообщения: 31.05.2010 14:38
wolf0425


Код: dir /b /aa-d //server/XML/*.xml 1>nul 2>nul && (xcopy /y /m //server/XML/*.xml D:\Import_XML\) || (echo Files not found)
Автор: wolf0425
Дата сообщения: 31.05.2010 16:07
sjsash
Цитата:
нужен я после сравнения файлов снимаю атрибут
а за время длительной операции сравнения скопированных не может новый файлик на сервере добавиться?
имеет смысл копирование/проверку/снятие аттрибута сделать пофайловым а не групповым (for /f "delims=" %%a ('dir ... )

Добавлено:

Цитата:
как убрать запрос "сравнить другие файлы" после выполнения команды - Comp ?

использовать не Comp, а fc - не вариант?
Автор: sjsash
Дата сообщения: 31.05.2010 16:23
wolf0425


Цитата:
а за время длительной операции сравнения скопированных не может новый файлик на сервере добавиться?

Та нет, файлы автоматически не появляются. Юзер экспортирует с 1С на сервер раз в месяц, а второй юзер bat-ником тянет их к себе и импортирует в другую прогу.

Добавлено:

Цитата:
использовать не Comp, а fc - не вариант?

может и вариант не знал про такой оператор, посмотрим...

Все отлично работает и спасибо за подсказаный оператор fc


Вопрос по оператору fc - есть ли у него errorlevel ( я так думаю что есть ) и описание?
И всеже хочется узнать - как задать автоматический вариант ответа на вопросы bat-ника може подскажет кто ?
Автор: king_stiven
Дата сообщения: 31.05.2010 17:29
sjsash

Цитата:
Но всеже хочется узнать - как задать автоматический вариант ответа на вопросы bat-ника може подскажет кто ?

Типа если при какой нить операции батник спрашивает,y жать или n? Если только перед этой операцией запустить второй батник скрыто из первого, чтоб он сэмулировал нажатие клавиши после паузы, но тут нужны парочка посторонних утилей типа nircmd , hstart или cmdow, sleep желательно.
Автор: ComradG
Дата сообщения: 31.05.2010 17:43
mugil_cephalus

Цитата:
http://forum.ru-board.com/topic.cgi?forum=62&topic=6156&start=23&limit=1&m=1#1

Уже читал, но я не про хекс, а системный шелл имел в виду. Кстати, я тут продолжил поиски, и понял, что не все так безнадежно. Будут подробности, свистну.
Автор: TTTT555
Дата сообщения: 31.05.2010 18:34
Подскажите пожалуйста по такой проблеме:

Имеется комп с Windows 7. Если запускать батник напрямую с мышки - то всё нормально исполняется.
А вот если поручить сторонней программе запускать этот батник, то вылетает окошко от службы обнаружения интерактивных приложений -> жмем просмотреть сообщение -> попадаем на пустой голубой экран (как бы в какую-то виртуальную среду) где видим исполняемое окошко от нашего батника, но при этом он не выполняет то чего должен, в частности не получает доступа к сети.
Автор: Joo1z
Дата сообщения: 31.05.2010 18:44
TTTT555
Так в чем проблема? Проблема явно не в батнике. Либо вырубай службу, либо дай соответствующие права. Стукни лучше в ветку по семерке.
Автор: wolf0425
Дата сообщения: 31.05.2010 19:29

Код: как задать автоматический вариант ответа на вопросы bat-ника може подскажет кто ?
Автор: stydent62
Дата сообщения: 31.05.2010 20:35
как в батнике при запросе команды на подтверждение команды ответить НЕТ автоматически.
copy /-y c:\1\doc.exe c:\2\doc.exe дальше сообщенные о командной строки заменить существующий файл? и нам надо ответить НЕТ.
Автор: Grim_Repo
Дата сообщения: 31.05.2010 21:21
Здравствуйте.
Нужен батник который:
1. Спрашивает путь к директории проги.
2. Если путь не указан: подставляет путь по умолчанию, если указан, то проверяет: существует ли директория, если нет - выводит сообщение и прекращает выполнение.
3. Добавляет в реестр запись, в которой в нужных местах подставлен путь введенный пользователем + заменяя \ на \\.

Код:
[HKEY_CLASSES_ROOT\foo1]
@="Путь_юзера\\bar1"
[HKEY_CLASSES_ROOT\foo2]
@="Путь_юзера\\bar2"
и т.п.
Автор: SLIDER999
Дата сообщения: 31.05.2010 21:24
Есть текстовый файл. Нужно в нем удалить ОПРЕДЕЛЕННУЮ строку. Подскажите как реализовать.
Автор: Ortios
Дата сообщения: 31.05.2010 22:36
wolf0425, igor_andreev

Цитата:
как бы в sed сделать скрипт на удаление группы строк:
первая строка группы содержит string1
последняя строка группы является ближайшей содержащей string2


Код: sed -e :a -e "s/\n.*string1.*string2.*\n/\n/;N;ba"
Автор: 01MDM
Дата сообщения: 31.05.2010 22:39
Grim_Repo
Примерно так:

Код:
@echo off
setlocal

set "folder=C:\some path\bar2"
set /p folder="Enter path to bar2: "
if not exist "%folder%" echo Wrong Path && goto:eof

reg add "hkcr\foo1" /ve /t reg_sz /d "C:\some path\bar1" /f
reg add "hkcr\foo2" /ve /t reg_sz /d "C:\some path\bar2" /f
Автор: igor_andreev
Дата сообщения: 01.06.2010 00:16
Ortios
Да оно, спасибо

Код: "s/\n.*string1.*string2.*\n/\n/;N;ba"
Автор: wolf0425
Дата сообщения: 01.06.2010 00:50
Ortios
Цитата:
как бы в sed сделать скрипт на удаление группы строк:
первая строка группы содержит string1
последняя строка группы является ближайшей содержащей string2

Код: sed -e :a -e "s/\n.*string1.*string2.*\n/\n/;N;ba"
Автор: us0r
Дата сообщения: 01.06.2010 02:24
stydent62
echo n | xcopy /-y c:\1\doc.exe c:\2\doc.exe
(Проверено на XCOPY + WinXP SP3)

Добавлено:
SLIDER999
Ну если только одну и одноразово- то как- то так можно:

Код: @echo off
cls
setlocal
REM Предопределяем переменные
set trgtfile=путь к файлу
set str=искомая строка
REM Ниже возможность ввести альтернативный путь к файлу и искомую строку
set /p trgtfile="Path to file: "
set /p str="String to find: "
find /V %str% %trgtfile% >> %trgtfile%.fin
del /q %trgtfile% || ren %trgtfile%.fin %trgtfile%
endlocal
Автор: wolf0425
Дата сообщения: 01.06.2010 10:55
stydent62

Цитата:
как в батнике при запросе команды на подтверждение команды ответить НЕТ автоматически.
copy /-y c:\1\doc.exe c:\2\doc.exe дальше сообщенные о командной строки заменить существующий файл? и нам надо ответить НЕТ.
echo n | copy /-y c:\1\doc.exe c:\2\doc.exe
но чем прикручитьвать отправку N лучше бы прикрутить проверку наличия c:\2\doc.exe перед копированием:

Код: if not exist c:\2\doc.exe copy c:\1\doc.exe c:\2\doc.exe
Автор: sjsash
Дата сообщения: 01.06.2010 12:10
wolf0425
Ты просто "мой герой" . Такое ощущение что ты один отвечаеш на мои вопросы по существу
Цитата:
в простых случаях - так: echo y | format a:
Это я так понял форматирование диска А без запроса. Например сравнение файлов командой Comp с автоматическим ответом после сравнения "n" (типа больше не сравнивать файлы) будет код
Код: echo n | comp "C:\logfile.log" "D:\Log\logfile1.log"
Автор: TTTT555
Дата сообщения: 01.06.2010 17:28
Подскажите пожалуйста код батника.
Имеется 2 сетевых адаптера. Один с ip-адресом, начинающимся на 10ку, второй с ip-адресом, начинающимся на 192.
Надо чтобы при запуске, он записывал ip-адрес, начинающийся на 192 в текстовый файл.
А при повторном запуске сравнивал текущий ip-адрес с тем что записан в тхт-файле, и в случае изменений запускал бы сторонний екзешник на исполнение, где в качестве параметра был бы указан новый ип-адрес и попутно перезаписывал бы ип-адрес в тхт-файле.
Автор: Ortios
Дата сообщения: 01.06.2010 19:42
wolf0425, igor_andreev
Каюсь, накосячил. С учетом поступившей конкретики привожу правильный вариант.

Код: sed -e :a -e "/b/{s/.*d.*\n//;N;ba}"
Автор: BorlandIMHO
Дата сообщения: 01.06.2010 23:15
TTTT555
Насколько я понял постановку задачи...
IpChangeDetector.cmd
Код: @echo off
REM первые 2 set'а нуждаются в подгонке под конкретную систему
REM имя интерфейса на котором отслеживаем изменения
REM и "детектор" строки с адресом в выдаче команды netsh (зависит от локализациии и возможно версии ОС)
set "INTERFACE=Подключение по локальной сети"
set "DETSTRING=IP-адрес"

set "LOGFILE=%~dp0IpChange.log"
set "OLDIPFILE=%~dp0OldIp.tmp"
set "PROGTORUN=c:\Path To\Your.exe"
for /f "tokens=2" %%A in ('netsh interface ipv4 show config "%INTERFACE%"^|find /I "%DETSTRING%"') do set CURRIP=%%A
if NOT EXIST "%OLDIPFILE%" (call :FRUN) else (call :NRUN)
goto :EOF

:FRUN
echo IP Change Detector for interface "%INTERFACE%" first started at %DATE% %TIME% >"%LOGFILE%"
echo Current IP is %CURRIP%>>"%LOGFILE%"
echo %CURRIP%>"%OLDIPFILE%"
goto :EOF

:NRUN
call :GETOLDIP
if %OLDIP% == %CURRIP% goto :EOF
echo IP change from %OLDIP% to %CURRIP% detected at %DATE% %TIME%>>"%LOGFILE%"
echo %CURRIP%>"%OLDIPFILE%"
start "Running Your Program" "%PROGTORUN%" %CURRIP%
goto :EOF

:GETOLDIP
for /f %%B in (%OLDIPFILE%) do set OLDIP=%%B
goto :EOF
Автор: Mark_Titov
Дата сообщения: 02.06.2010 06:17
...Доброго дня всем.

Подскажите пож-ста - как сделать что бы только 1-го числа каждого месяца в 06:00 команда "call" выполнялась?
Все-таки не хочется планировщиком пользоваться...

Благодарю...
Автор: res2001
Дата сообщения: 02.06.2010 07:40
Mark_Titov
работа как раз для планировщика.
По каким соображениям не хочется использовать планировщик? Видимо что-то религиозное
Автор: Mark_Titov
Дата сообщения: 02.06.2010 08:12

Цитата:
Видимо что-то религиозное

...Наверное не так вопрос поставил.

Сделал код который делает отчеты в файл txt в течении месяца. Отчеты выглядят так -

Код: Средне-арифметический процент потери связи за 01.06.2010 составил - 25%
Средне-арифметический процент потери связи за 02.06.2010 составил - 0%
Средне-арифметический процент потери связи за 03.06.2010 составил - 50%
Средне-арифметический процент потери связи за 04.06.2010 составил - 0%
Средне-арифметический процент потери связи за 05.06.2010 составил - 100%
...и т.д. до конца месяца

Страницы: 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132

Предыдущая тема: XP не видит второй раздел на съемном USB-HDD


Форум Ru-Board.club — поднят 15-09-2016 числа. Цель - сохранить наследие старого Ru-Board, истории становления российского интернета. Сделано для людей.