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

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в 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
Refugee

Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Valdon
SC \\RemotePC create Имя_службы binpath= %%SystemRoot%%\System32\sv.exe

Всего записей: 512 | Зарегистр. 31-03-2004 | Отправлено: 00:45 04-08-2006
slech



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Kirillhome
Спасибо.
Блиин я и незаметил.
 
Добавлено:
KapralBel
Где в твоём коде поменять чтобы Day было в формате xx, а не x
Set dt=%Date%    
Set dtDay=%date:~0,2%  
Set dtMonth=%date:~3,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  

 
Заранее спасибо.

Всего записей: 4890 | Зарегистр. 10-11-2004 | Отправлено: 09:10 04-08-2006
Valdon



Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Refugee, в случае
SC \\RemotePC create Имя_службы binpath= %%SystemRoot%%\System32\sv.exe
К примеру, если винда локальной тачки расположена C:\windows, а удаленной D:\Winnt, получим:
binpath= %C:\windows%\System32\sv.exe
slech, в случае
Так и пишешь  
sc \\PC create sv binpath= %SystemRoot%\System32\sv.exe  
sc \\PC create sv binpath= %Windir%\System32\sv.exe
получим:
binpath= C:\windows\System32\sv.exe
 
А необходимо  binpath= D:\Winnt\System32\sv.exe
Народ, памагите плиззз!!!!!

Всего записей: 415 | Зарегистр. 25-07-2005 | Отправлено: 11:23 04-08-2006
slech



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Valdon
Да ты прав.
Когда мы пишем %Windir% система смотрит наши параметры а не удалённой машины. Это проблема.
 
Может для начала сделать так:
sc \\192.168.0.11 qc Alerter
SERVICE_NAME: alerter
        TYPE               : 20  WIN32_SHARE_PROCESS
        START_TYPE         : 3   DEMAND_START
        ERROR_CONTROL      : 1   NORMAL
        BINARY_PATH_NAME   : C:\WINDOWS\System32\svchost.exe -k LocalService
        LOAD_ORDER_GROUP   :
        TAG                : 0
        DISPLAY_NAME       : Alerter
        DEPENDENCIES       : LanmanWorkstation
        SERVICE_START_NAME : NT AUTHORITY\LocalService

А отсюда выдрать %windir%

Всего записей: 4890 | Зарегистр. 10-11-2004 | Отправлено: 11:34 04-08-2006 | Исправлено: slech, 11:36 04-08-2006
ALEF



Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Для того чтобы в WinXP из командной строки изменить параметры IP для сетевого подключения успешно применяется команда вида:

Код:
netsh interface ip set address name="Имя интерфейса" source=static addr=<Адрес> mask=<Маска> gateway=<Шлюз>

Утилита netsh может выполнять операции на удаленном хосте, для этого применяется ключ -r, команда выглядит так:

Код:
netsh -r <remote machine's current IP> interface ip set address "Local Area Connection" static <IP Address> <Subnet Mask> <Default Gateway> 1

в ответ получаю ошибку:

Код:
The following command was not found: interface ip set address "Local Area Connec  
tion" static <IP Address> <Subnet Mask> <Default Gateway> 1

Имя подключения указано правильно.
Кому нибудь удавалось успешно применять netsh для удаленного конфигурирования IP-протокола?

Всего записей: 993 | Зарегистр. 03-11-2003 | Отправлено: 11:36 04-08-2006 | Исправлено: ALEF, 11:39 04-08-2006
Kirillhome



Full Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
slech
Я для себя "переписал" всё таким образом:

Код:
 
@echo off
set T_Date=%DATE%
IF %T_DATE:~0,1%==0 (
  SET /A T_DAY=%T_DATE:~1,1%) else (
  SET /A T_DAY=%T_DATE:~0,2%)
 
IF %T_DATE:~3,1%==0 (
   SET /A T_MONTH=%T_DATE:~4,1%) else (
   SET /A T_MONTH=%T_DATE:~3,2%)
 
SET /A T_YEAR=%T_DATE:~6,4%
 
set /A T_DAY=%T_DAY%-1
if %T_DAY%==0 (
   SET /A T_MONTH=%T_MONTH%-1
   if %T_MONTH%==0 (
      set /A T_YEAR=%T_YEAR%-1
      SET /A T_MONTH=12
      set /A T_DAY=31)
      else (
      if %T_MONTH%==1 (Set /A T_Day=31)
      if %T_MONTH%==2 (Set /A T_Day=28)
      if %T_MONTH%==3 (Set /A T_Day=31)
      if %T_MONTH%==4 (Set /A T_Day=30)
      if %T_MONTH%==5 (Set /A T_Day=31)
      if %T_MONTH%==6 (Set /A T_Day=30)
      if %T_MONTH%==7 (Set /A T_Day=31)
      if %T_MONTH%==8 (Set /A T_Day=31)
      if %T_MONTH%==9 (Set /A T_Day=30)
      if %T_MONTH%==10 (Set /A T_Day=31)
      if %T_MONTH%==11 (Set /A T_Day=30)
      if %T_MONTH%==12 (Set /A T_Day=31)
   )  
)
   
if %T_MONTH% LSS 10 (if %T_DAY% LSS 10 (echo 0%t_Day%.0%t_Month%.%t_Year%.txt) else echo %t_Day%.0%t_Month%.%t_Year%.txt) else (echo %t_Day%.%t_Month%.%t_Year%.txt)

Всего записей: 426 | Зарегистр. 23-11-2004 | Отправлено: 13:05 04-08-2006
Valdon



Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Можна и отсюдава выдрать %windir%  удаленной тачки
 
bootcfg /query /s RemotePC

Параметры загрузки
----------------------------
timeout: 0
default: multi(0)disk(0)rdisk(0)partition(2)\WINNT
Элементы списка загрузки
------------------------
Идентификатор загрузочной записи: 1
Имя:                              "Microsoft Windows 2000 Professional RUS"
Путь:                             multi(0)disk(0)rdisk(0)partition(2)\WINNT
Параметры загрузки ОС:            /fastdetect
 
Идентификатор загрузочной записи: 2
Имя:                              "Microsoft Windows"
Путь:                             C:\
Параметры загрузки ОС:            N/A

НО может быть ктонить подскажет более изящное решение по поводу определения %SystemRoot% на удаленной тачке ???

Всего записей: 415 | Зарегистр. 25-07-2005 | Отправлено: 13:27 04-08-2006 | Исправлено: Valdon, 13:37 04-08-2006
CYBORG1980



Junior Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Может так....
 
wmic /node:remotepc os get SystemDirectory

Всего записей: 77 | Зарегистр. 27-05-2004 | Отправлено: 14:23 04-08-2006
Valdon



Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Ну блин, все вааще проста:
Если локалный %systemroot%=C:\windows а удаленный %systemroot%=D:\winnt,
делаем так:
Set Var1=Systemroot
sc \\RemotePC create Имя_Службы binpath= %%Var1%%\System32\Имя_программы
 
В итоге имеем:
binpath= D:\winnt\System32\Имя_программы

Всего записей: 415 | Зарегистр. 25-07-2005 | Отправлено: 14:41 04-08-2006
slech



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Valdon
Ха, прикольно.

Всего записей: 4890 | Зарегистр. 10-11-2004 | Отправлено: 14:48 04-08-2006
ARiNO

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Ребята, есть??? готовые батчики, чтоб до запуска системы (допустим Виня2000) удаляли определенные файлы со всех диррикторий (типа C:/*.tmp, D:/*.tmp, Z:/*.tmp) ?

Всего записей: 59 | Зарегистр. 16-12-2005 | Отправлено: 15:07 04-08-2006 | Исправлено: ARiNO, 15:17 04-08-2006
slech



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
ARiNO
Ты просишь или предлогаешь ?

Всего записей: 4890 | Зарегистр. 10-11-2004 | Отправлено: 15:11 04-08-2006
ARiNO

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

Всего записей: 59 | Зарегистр. 16-12-2005 | Отправлено: 15:16 04-08-2006
Evig

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Приветствую обитателей.Такой вопросец.Есть сетка,имеющая один общий выход в интернет через аппаратный роутер-файервол и АДСЛ-мопед. Как можно получить c  одной из машин,болтающихся внутри сети,и передать Blatу внешний IP адрес?

Всего записей: 22 | Зарегистр. 18-06-2005 | Отправлено: 15:24 04-08-2006
Valdon



Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Ну блин бред какойто.....
Делаю следующее:
пуск->выполнить->cmd
>set var1=Systemroot
>sc \\RemotePC create SC binpath= %%Var1%%\System32\SC.EXE
>sc \\RemotePC qc SC
>BINARY_PATH_NAME   : D:\WINNT\system32\r_server.exe
 
Создаю и запускаю батничек следующего содержания:
set var1=Systemroot
sc \\RemotePC create SC binpath= %%Var1%%\System32\SC.EXE
sc \\RemotePC qc SC>c:\temp.txt
 
Содержимое c:\temp.txt:
BINARY_PATH_NAME   : %var1%\system32\r_server.exe
 
Ничего не понимаю, разъясните плиз......

Всего записей: 415 | Зарегистр. 25-07-2005 | Отправлено: 15:28 04-08-2006 | Исправлено: Valdon, 15:34 04-08-2006
slech



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
ARiNO
Я думаю тебе надо сделать батничек вида  

@echo off
del c:\*.tmp /Q /S
del d:\*.tmp /Q /S
del e:\*.tmp /Q /S

И запустить его сервисом - смотри шапку.

Всего записей: 4890 | Зарегистр. 10-11-2004 | Отправлено: 15:57 04-08-2006
ARiNO

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

Всего записей: 59 | Зарегистр. 16-12-2005 | Отправлено: 16:05 04-08-2006
slech



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Kirillhome
А если бедет 10 число ?

Всего записей: 4890 | Зарегистр. 10-11-2004 | Отправлено: 16:14 04-08-2006
Kirillhome



Full Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
slech
1) Всё перевожу в числа
   SET /A ...
2) Насколько я смог, я предусмотрел, что бы не появлялись числа типа 08, 09
 IF %T_DATE:~0,1%==0 (
  SET /A T_DAY=%T_DATE:~1,1%) else (
  SET /A T_DAY=%T_DATE:~0,2%)  
3) Если число в дате или в месяце меньше 10, то тогда (при выводе) оно дополняется 0
    if %T_MONTH% LSS 10 .... echo %t_Day%.0%t_Month%.%t_Year%.txt
4) Если больше или равно - то тогда смотри else

Всего записей: 426 | Зарегистр. 23-11-2004 | Отправлено: 16:28 04-08-2006
Refugee

Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Valdon
У меня в батнике %%SystemRoot%% работает правильно.
binPath= %%systemroot%% значит создать в реестре путь с %systemroot%, и Windows на той машине переведет %systemroot% в значение при запуске сервиса
 
мой батник для установки радмина

Всего записей: 512 | Зарегистр. 31-03-2004 | Отправлено: 16:35 04-08-2006 | Исправлено: Refugee, 16:56 04-08-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