Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Операционные системы » Microsoft Windows » Задачи на bat-файлах

Модерирует : KLASS, IFkO

vu1tur (14-11-2006 16:59): http://forum.ru-board.com/topic.cgi?forum=62&topic=9040  Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101

   

hacsoft

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Задачи на bat-файлах
Вопросы, задачи и их решения по работе с командными файлами, а также сопутствующие ссылки.
 
Смежные темы:
В помощь системному администратору » Автоматизация администрирования
Программы » Командная строка, батники\сценарии
 
Полезные ссылки:
· Cmd. Описание от разработчиков
· Набор GNU утилит для win32
· Встроенный справочник по командам: hh ntcmds.chm
· Пакет утилит для организации интерфейса в bat-файлах
· Использование ansi.sys
· cmdow — изменение параметров и видимости дос-окна
· blat — отправка почты из консоли
 
Готовые решения и частые вопросы:
· Создание листинга директорий на примере создания плейлиста
· Разименовывание переменных
· Переименовывание файлов по дате создания
· Запуск сетевого подключения
· Запуск bat файлов как сервис
· Пример выполнения команд по результату команды ping
· Использование даты на день раньше чем сегодня
 
Невозможности — что нельзя сделать с помощью командных файлов:
· изменть конфигурацию IP на удаленной машине (без помощи rcmd.exe) [добавил ALEF]
 
 
Дополняем шапку: добавляем готовые решения, полезные ссылки.
 
Примечание: Большие куски кода заключайте в тэг [more]  
 
Важно: копируя батник через буфер обмена из форума не забывайте удалять пробелы в конце каждой строки, т.к. в некоторых случаях из-за этого программа будет работать неправильно!!!
 
Старая версия первого сообщения

Всего записей: 116 | Зарегистр. 18-11-2005 | Отправлено: 22:58 18-11-2005 | Исправлено: Elroir, 05:50 11-11-2006
KapralBel



Platinum Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Zueuk
2 вопроса
1. Какая у тебя ОС?
2. Задача обязательно должна работать на .Bat/.cmd-файлах? Допускается ли замена на VBS/JS?
на .Bat/.cmd - можно сделать, но на VBS/JS гораздо легче

Всего записей: 11354 | Зарегистр. 16-02-2005 | Отправлено: 12:38 10-01-2006
Strogg



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
У меня вопрос.
Как с помощью команды Del удалить скрытые файлы если их отображение запрещено в системе?

Всего записей: 839 | Зарегистр. 08-05-2003 | Отправлено: 13:27 10-01-2006 | Исправлено: Strogg, 13:28 10-01-2006
KapralBel



Platinum Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Strogg
Del /?
del . /q /f /a:h

Всего записей: 11354 | Зарегистр. 16-02-2005 | Отправлено: 13:41 10-01-2006
Strogg



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
KapralBel
Спасибо.
Я и сам разобрался буквально через минуту после того как разместил пост
 
Добавлено:
Еще один вопрос но боюсь на этот раз я сам не разберусь.
Как сделать чтобы файл копировался в зависимости от операционной системы.
 
Допустим, если WinXP то из С: в папку Windows\System32
Если Win98 то в папку Windows\System?

Всего записей: 839 | Зарегистр. 08-05-2003 | Отправлено: 13:47 10-01-2006
KapralBel



Platinum Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
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

Код:
 
If "%OS%"=="Windows_NT" Echo System32
 

данная переменная принимает значение Windows_NT для систем Windows NT/2000/XP/2003
для 9х - по моему пустое значение
 
Думаю дальше сам разберешься

Всего записей: 11354 | Зарегистр. 16-02-2005 | Отправлено: 14:12 10-01-2006
Strogg



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
KapralBel
Спасибо!

Всего записей: 839 | Зарегистр. 08-05-2003 | Отправлено: 14:43 10-01-2006
Zueuk

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
KapralBel
1. Рабочая станция 2000 про.
2. Предпочтение отдаётся bat файлам, т.к. на них всё написано, а VBS/BS не известен (да и не к чему они, ведь есть cmd ).
 
Как я понял, устанавливается сразу и день, и месяц?

Всего записей: 58 | Зарегистр. 15-08-2003 | Отправлено: 14:44 10-01-2006
KapralBel



Platinum Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Zueuk
Проверь вышеуказанный батник на 2000-й, теоретически должно работать (но могут быть проблемы, ибо возможности cmd.exe - от версии к версии растут)
 
После окончания его работы в переменных остануться год,месяц и день предыдущего дня  
dtYear - год
dtMonth - месяц
dtDay - день
 
Для проверки добавь скорректируй батничек следуюцим образом

Код:
 
@Echo Off  
Set dt=%Date%  
Set dt=01.01.2006
...
 

т.е. будет считать не от сегодня , а от 1 января - сменится и год и месяц и день

Всего записей: 11354 | Зарегистр. 16-02-2005 | Отправлено: 14:51 10-01-2006
Zueuk

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
KapralBel
Дааа, ребята из Микрософт совместимый софт делают!
 
Подправил, спасибо. Получилось вот как:
 
Set dt=%Date%  
Set dtDay=%date:~3,2%
Set dtMonth=%date:~6,2%
Set dtYear=%date:~-4%
Set /a dtDay=%dtDay%-1  

Всего записей: 58 | Зарегистр. 15-08-2003 | Отправлено: 15:03 10-01-2006
KapralBel



Platinum Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
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)?

Всего записей: 11354 | Зарегистр. 16-02-2005 | Отправлено: 15:20 10-01-2006
OLEGATORING

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Програмирования незнаю, но вот этот пример многим поможет при серфенге в нете =) Обычный bat файл
"C:\Program Files\Opera\Opera.exe" http://www.avtorov.net/index.php http://www.philka.ru ну и так далее...
Соответственно вместо оперы можно подставить фаерфох и ряд других программ, ну а заместо этих сайтов - другие (кол-во неограниченно). И тогда одним батником можно открыть сразу 15-20 любимых сайтов (они будут открываться как новые вкладки) что посещаем каждый день =)
P.S.  
простенько и нужно!

Всего записей: 12 | Зарегистр. 21-12-2005 | Отправлено: 15:28 10-01-2006
nightlight

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Zueuk
C датой на CMD большие проблемы. Все сильно зависит от локализации, способа представления даты и версии Windows. Возможные более или менее универсальные решения подробно изложены здесь:
http://www.robvanderwoude.com/datetime.html

Всего записей: 112 | Зарегистр. 17-03-2004 | Отправлено: 15:32 10-01-2006
Zueuk

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
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
С датой действительно, большие косяки...

Всего записей: 58 | Зарегистр. 15-08-2003 | Отправлено: 15:44 10-01-2006
KapralBel



Platinum Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Zueuk
Сорри, забыл что в зависимости от региональных настроек %date% - выдает различный формат, и если участвует день недели - то тогда мой вариант не срабатывает

Всего записей: 11354 | Зарегистр. 16-02-2005 | Отправлено: 15:58 10-01-2006
Zueuk

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
KapralBel
Ничего страшного!
Тебе спасибо большое, не раз откликался!

Всего записей: 58 | Зарегистр. 15-08-2003 | Отправлено: 20:30 10-01-2006
Smitis



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

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

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

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


Всего записей: 2436 | Зарегистр. 09-02-2003 | Отправлено: 23:27 10-01-2006 | Исправлено: Smitis, 23:28 10-01-2006
32sasha



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

Цитата:
[/q]

Цитата:
KapralBel

[q]Какая у тебя ОС?

У менят Windows XP Home

Всего записей: 67 | Зарегистр. 05-01-2006 | Отправлено: 01:32 11-01-2006
KapralBel



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

Код:
 
@Echo Off
Set dtDay=%date:~3,2%
Set dtDay=%date:~0,2%
If %dtDay%==10 (
Rem Нужные действия
)
 

Сначала сделай в командной строке Echo %Date% в зависимости от выводимого формата даты - оставь вторую или третью строку батника
Если типа Пн 10.01.2006, то Set dtDay=%date:~3,2%
Если типа 10.01.2006, то Set dtDay=%date:~0,2%
Короче смотришь с какой позиции у тебя начинается число месяца (счет с нуля) и подставляешь вместо 1-й цифры (в данном примере или 3 или 0)

Всего записей: 11354 | Зарегистр. 16-02-2005 | Отправлено: 10:26 11-01-2006
Bolsen



Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
nightlight
 
Спасибо. forfiles - то, что надо.
 
Удачи.

Всего записей: 2 | Зарегистр. 07-01-2006 | Отправлено: 18:24 11-01-2006
Zueuk

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Есть задачка очередная
 
Нужно обрабатывать файлы (добавлять их в архив). Файлы создаются поочередно и в их названии меняются цифры, которые обозначают порядковый номер. В архив нужно добавлять при запуске бат-файла только последние (учитываются цифры по порядку, берутся из названия).
 
Например, создался файл с именем, например, 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 меняется) обрабатываются нормально.
Решение этого парадокса мной пока не найдено...
 
Если есть более простое решение приведёной задачи, буде рад.

Всего записей: 58 | Зарегистр. 15-08-2003 | Отправлено: 12:41 12-01-2006
   

Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101

Компьютерный форум Ru.Board » Операционные системы » Microsoft Windows » Задачи на bat-файлах
vu1tur (14-11-2006 16:59): http://forum.ru-board.com/topic.cgi?forum=62&topic=9040


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.Board
© Ru.Board 2000-2020

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru