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

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

Автор: Venchik
Дата сообщения: 07.01.2006 12:45
1. Как отследить обрыв VPN соединения?
2. Как сделать так, чтобы батник запускался свернутым/скрытым?
Автор: asup
Дата сообщения: 07.01.2006 15:11
Smitis
Smitis

Цитата:
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору

asup

Цитата:У меня не получается реализовать это в виде одного файла

Текущее имя файла содержится в параметре %0
Будет что-то типа
runas /user:admins /savecred %0
А что бы не было рекурсивного зацикливания предусмотреть дополнительный параметр или переменную.

Для управления окнами можно использовать утилиту CMDOW. Например, команда cmdow @ /hid в командном файле скроет его окно. Можно запускать файлы через ярлык через cmdow /run /hid команда

А вообще, с подобными вопросами лучше наверное сюда http://forum.ru-board.com/topic.cgi?forum=5&bm=1&topic=4582&start=360#lt


Спасибо Smitis за консультацию!!!
Но у меня не получается выти из зацикливания после %0, притом задачи выполняются непоследовательно а зацикливаются все задачи.....у меня открылось за пару секунд по 50 окон каждой задачи, мне нужна помощь, как это грамотно реализовать??????????
Ещё раз поздравляю со всеми праздниками!
Заранее очень благодарен!


Автор: Venchik
Дата сообщения: 07.01.2006 16:08
3. Как сделать так, чтобы батник запускался при старте системы (без логона)?
4. Как сделать так, чтобы быть уверенным, что батник будет выполнен не до, а после старта определенных сервисов? Я использую в батнике команду rasdial, которая зависит от служб.
Автор: Bolsen
Дата сообщения: 07.01.2006 16:41
Доброго времени суток.

Подскажите,плиз, как можно при помощи батника, из определенного каталога удалить "старые" файлы? Например те, у которых, дата создания отличается от системной на N дней?

Спасибо.
Автор: S_Leha
Дата сообщения: 08.01.2006 16:31
Хотелось бы узнать, представляется возможным через батник изменить вид указателя мыши, допустим, на C:\point.cur ?
Автор: 32sasha
Дата сообщения: 08.01.2006 19:27
Привет.
Кто может написать батник примерно такого содержания
К примеру 10 числа каждого месяца запускается программа.
Но батник гузится каждый день.
На VBA она выглядит так:
Sub open()
a = Day(Date)
If a = 10 Then
То что должна сделать программа
End If
End Sub
Автор: EZH
Дата сообщения: 08.01.2006 22:23
S_Leha

Цитата:
Хотелось бы узнать, представляется возможным через батник изменить вид указателя мыши, допустим, на C:\point.cur ?

Это делается внесением в реестр по адресу HKEY_CURRENT_USER\Control Panel\Cursors сответствующего значения (пути к файлу .cur) для нужного типа курсора (Arrow, Help...)
Проше будет настроить это в панели управления и выгрузить ветку в reg-файл. А потом его и запускай хоть из того же батника. Можно написать regedit /s file.reg - чтобы без запроса на внесение изменений.
Автор: KapralBel
Дата сообщения: 09.01.2006 09:57
32sasha
Какая у тебя ОС?
Автор: nightlight
Дата сообщения: 09.01.2006 13:58
Bolsen

Цитата:
Подскажите,плиз, как можно при помощи батника, из определенного каталога удалить "старые" файлы?

Проще всего с помощью утилиты forfiles.exe из reskit


To list all of the files older than 100 days on drive C:, type:

forfiles /p c:\ /s /m*.* /dt-100 /c"cmd /c echo @file : date >= 100 days"

http://www.microsoft.com/technet/prodtechnol/windowsserver2003/library/ServerHelp/9660fea1-65c7-48cf-b466-204ba159381e.mspx

Идеологически более правильно делать это WSH скриптом...

Here is a Michael Harris script that deletes files older than x days:
http://groups.google.com/group/microsoft.public.scripting.wsh/msg/14df6623fc552446



Добавлено:
32sasha
Чтоб запускать программу в нужное время обычно используют шедулер.
Если хотите поизвращаться - на VBScript это будет выглядеть почти так же как на VB:
http://www.w3schools.com/vbscript/func_day.asp
Автор: Zueuk
Дата сообщения: 10.01.2006 09:55
Возникла следующая необходимость:
требуется работа с переменной date, т.е. в названия файлов вставляется число, месяц, год.
С текущими настройками (сегоднишними) все нормально.
А как сделать, чтоб в именах можно было использовать число, месяц, год вчерашнего? При этом надо учитывать смену месяцев.
Т.е. обычное вычитание "текущее число - 1" не пойдходит (если сегодня 1 число, то что получится?!).

Может кто что подсказать? У меня с идеями на этот счет все исчерпано.
Автор: KapralBel
Дата сообщения: 10.01.2006 11:38
Zueuk
2 вопроса
1. Какая у тебя ОС?
2. Задача обязательно должна работать на .Bat/.cmd-файлах? Допускается ли замена на VBS/JS?
на .Bat/.cmd - можно сделать, но на VBS/JS гораздо легче
Автор: Strogg
Дата сообщения: 10.01.2006 12:27
У меня вопрос.
Как с помощью команды Del удалить скрытые файлы если их отображение запрещено в системе?
Автор: KapralBel
Дата сообщения: 10.01.2006 12:41
Strogg
Del /?
del . /q /f /a:h
Автор: Strogg
Дата сообщения: 10.01.2006 12:47
KapralBel
Спасибо.
Я и сам разобрался буквально через минуту после того как разместил пост

Добавлено:
Еще один вопрос но боюсь на этот раз я сам не разберусь.
Как сделать чтобы файл копировался в зависимости от операционной системы.

Допустим, если WinXP то из С: в папку Windows\System32
Если Win98 то в папку Windows\System?
Автор: KapralBel
Дата сообщения: 10.01.2006 13:12
Zueuk
Для систем XP/2003

Код:
@Echo Off
Set dt=%Date%
Set dtDay=%dt:~0,2%
Set dtMonth=%dt:~3,2%
Set dtYear=%dt:~6,4%
Set /a dtDay=%dtDay%-1%
If %dtDay%==0 (Set /A dtMonth=%dtMonth%-1)
If %dtMonth%==0 (Set /a dtYear=%dtYear%-1) & (Set dtMonth=12)
If %dtDay%==0 (
If %dtMonth%==1 (Set dtDay=31)
If %dtMonth%==3 (Set dtDay=31)
If %dtMonth%==5 (Set dtDay=31)
If %dtMonth%==7 (Set dtDay=31)
If %dtMonth%==8 (Set dtDay=31)
If %dtMonth%==10 (Set dtDay=31)
If %dtMonth%==12 (Set dtDay=31)
If %dtMonth%==2 (Set dtDay=28)
If %dtMonth%==4 (Set dtDay=30)
If %dtMonth%==6 (Set dtDay=30)
If %dtMonth%==9 (Set dtDay=30)
If %dtMonth%==11 (Set dtDay=30)
)
Set dt
Автор: Strogg
Дата сообщения: 10.01.2006 13:43
KapralBel
Спасибо!
Автор: Zueuk
Дата сообщения: 10.01.2006 13:44
KapralBel
1. Рабочая станция 2000 про.
2. Предпочтение отдаётся bat файлам, т.к. на них всё написано, а VBS/BS не известен (да и не к чему они, ведь есть cmd ).

Как я понял, устанавливается сразу и день, и месяц?
Автор: KapralBel
Дата сообщения: 10.01.2006 13:51
Zueuk
Проверь вышеуказанный батник на 2000-й, теоретически должно работать (но могут быть проблемы, ибо возможности cmd.exe - от версии к версии растут)

После окончания его работы в переменных остануться год,месяц и день предыдущего дня
dtYear - год
dtMonth - месяц
dtDay - день

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

Код:
@Echo Off
Set dt=%Date%
Set dt=01.01.2006
...
Автор: Zueuk
Дата сообщения: 10.01.2006 14:03
KapralBel
Дааа, ребята из Микрософт совместимый софт делают!

Подправил, спасибо. Получилось вот как:

Set dt=%Date%
Set dtDay=%date:~3,2%
Set dtMonth=%date:~6,2%
Set dtYear=%date:~-4%
Set /a dtDay=%dtDay%-1
Автор: KapralBel
Дата сообщения: 10.01.2006 14:20
Zueuk

Цитата:
Set dt=%Date%
Set dtDay=%date:~3,2%
Set dtMonth=%date:~6,2%
Set dtYear=%date:~-4%
Set /a dtDay=%dtDay%-1

Ты уверен в правильности написания?
У меня дает следующее

dt=dd.mm.yyyy
dtDay=mm
dtMonth=yy
dtYear=yyyy

Какой у тебя формат даты (значение переменной dt)?
Автор: OLEGATORING
Дата сообщения: 10.01.2006 14:28
Програмирования незнаю, но вот этот пример многим поможет при серфенге в нете =) Обычный bat файл
"C:\Program Files\Opera\Opera.exe" http://www.avtorov.net/index.php http://www.philka.ru ну и так далее...
Соответственно вместо оперы можно подставить фаерфох и ряд других программ, ну а заместо этих сайтов - другие (кол-во неограниченно). И тогда одним батником можно открыть сразу 15-20 любимых сайтов (они будут открываться как новые вкладки) что посещаем каждый день =)
P.S.
простенько и нужно!
Автор: nightlight
Дата сообщения: 10.01.2006 14:32
Zueuk
C датой на CMD большие проблемы. Все сильно зависит от локализации, способа представления даты и версии Windows. Возможные более или менее универсальные решения подробно изложены здесь:
http://www.robvanderwoude.com/datetime.html
Автор: Zueuk
Дата сообщения: 10.01.2006 14:44
KapralBel
Вот то, что у меня сейчас работает:

Set dt=%Date%
Set dtDay=%date:~3,2%
Set dtMonth=%date:~6,2%

Set dtYear=%date:~-4%
Set /a dtDay=%dtDay%-1
If %dtDay%==0 (Set /A dtMonth=%dtMonth%-1)
If %dtMonth%==0 (Set /a dtYear=%dtYear%-1) & (Set dtMonth=12)
If %dtDay%==0 (
If %dtMonth%==01 (Set dtDay=31)
If %dtMonth%==03 (Set dtDay=31)
If %dtMonth%==05 (Set dtDay=31)
If %dtMonth%==07 (Set dtDay=31)
If %dtMonth%==08 (Set dtDay=31)
If %dtMonth%==10 (Set dtDay=31)
If %dtMonth%==12 (Set dtDay=31)
If %dtMonth%==02 (Set dtDay=28)
If %dtMonth%==04 (Set dtDay=30)
If %dtMonth%==06 (Set dtDay=30)
If %dtMonth%==09 (Set dtDay=30)
If %dtMonth%==11 (Set dtDay=30)
)
Set dt


Команда echo %date% выдаёт: Вт 10.01.2006

nightlight
С датой действительно, большие косяки...
Автор: KapralBel
Дата сообщения: 10.01.2006 14:58
Zueuk
Сорри, забыл что в зависимости от региональных настроек %date% - выдает различный формат, и если участвует день недели - то тогда мой вариант не срабатывает
Автор: Zueuk
Дата сообщения: 10.01.2006 19:30
KapralBel
Ничего страшного!
Тебе спасибо большое, не раз откликался!
Автор: Smitis
Дата сообщения: 10.01.2006 22:27
asup

Цитата:
Но у меня не получается выти из зацикливания после %0, притом задачи выполняются непоследовательно а зацикливаются все задачи.....у меня открылось за пару секунд по 50 окон каждой задачи, мне нужна помощь, как это грамотно реализовать??????????

Попробуй использовать, например, переменные.

Код:
@echo off
if "level"=="1" goto second
:: здесь первая часть
set level=1
"%0"

:second
:: здесь вторая часть

exit
Автор: 32sasha
Дата сообщения: 11.01.2006 00:32

Цитата:
[/q]

Цитата: KapralBel

[q]Какая у тебя ОС?
Автор: KapralBel
Дата сообщения: 11.01.2006 09:26
32sasha

Код:
@Echo Off
Set dtDay=%date:~3,2%
Set dtDay=%date:~0,2%
If %dtDay%==10 (
Rem Нужные действия
)
Автор: Bolsen
Дата сообщения: 11.01.2006 17:24
nightlight

Спасибо. forfiles - то, что надо.

Удачи.
Автор: Zueuk
Дата сообщения: 12.01.2006 11:41
Есть задачка очередная

Нужно обрабатывать файлы (добавлять их в архив). Файлы создаются поочередно и в их названии меняются цифры, которые обозначают порядковый номер. В архив нужно добавлять при запуске бат-файла только последние (учитываются цифры по порядку, берутся из названия).

Например, создался файл с именем, например, 11201.txt. Он должен добавиться в архив. Затем создается файл 21201.txt. Теперь в архив должен попасть только он. Затем файл 31201.txt, после создания, так же попадает в архив. Содержание архива при архивировании должно состоять из последних файлов.

Есть некоторые свои идеи.
Список файлов решил получать следующей конструкцией:

FOR /F %%i IN ('dir /b /a-d D:\temp\*.txt') DO (echo %%i)

При этом получается такой список файлов:

21223.txt
31223.txt
41223.txt
11223.txt

И тут загвоздка, каким образом он упорядочивает эти файли по жирным цифрам??
А файлы вида file.00x (x меняется) обрабатываются нормально.
Решение этого парадокса мной пока не найдено...

Если есть более простое решение приведёной задачи, буде рад.

Страницы: 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667

Предыдущая тема: Вернуть библиотеку АТМ (поддержка шрифтов Type 1)


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