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

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

Код:
 
@Echo Off
set Counter=0  
FOR /F %%i IN ('dir /b /a-d /on Log\*.Log') DO Call :Count %%i
echo %Counter%  
GoTo :EOF
 
:Count
echo %1  %counter%
Set /a Counter=%Counter%+1  
GoTo :EOF
 

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

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Alan Mon
Решение одуренное по простоте, это возьму на заметку.
 
Меня требуется сохранение количества для дальнейших манипуляций.
 
KapralBel
Подходит, отлично!
Позволь вопрос оффтопный: ты в бате все время живешь?
 
Еще оффтоп
Нужно Балла Гейтса принудительно заставить запихнуть в дистриб Виндовса Перл!!!

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



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

Цитата:
Позволь вопрос оффтопный: ты в бате все время живешь?

Как сисадмин - обязан
 

Цитата:
Нужно Балла Гейтса принудительно заставить запихнуть в дистриб Виндовса Перл!!!

Кажеться ActivePerl - вешается в обработчик Windows Script Host наравне с JavaScript & Visual Basic Script

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

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Zueuk
по поводу циклов. где-то читал (дословно не помню, но суть вот такая) что при нахождении цикла вместо переменных в циклах значение подставляется ОДИН раз перед началом первого исполнения цикла (исключения составляют родные "цикличные" переменные тип %%i).

Код:
set Counter=0  
  FOR /F %%i IN ('dir /b /a-d /on D:\temp\*.txt') DO (  
echo %%i  
Set /a %%Counter=%Counter%+1 )  
echo %%Counter%

в трансляции будет иметь вид

Код:
set Counter=0  
  FOR /F %%i IN ('dir /b /a-d /on D:\temp\*.txt') DO (  
echo D:\temp\.......txt  
Set /a %%Counter=0+1 )  
echo 1

для приведения в нормальный вид этого кода надо запустить cmd /v:on
и код подправить на  

Код:
set Counter=0  
  FOR /F %%i IN ('dir /b /a-d /on D:\temp\*.txt') DO (  
echo %%i  
Set /a Counter=!Counter!+1 )  
echo %Counter%

по крайней мере у меня в cmd /v:on
работает

Код:
set count=0
for /l %%i in (5,-1,1) do (
echo %%i
set /a count=!count!+%%i
)
echo %count%
и выдает результат "15"
в справке немного написано про режим расширения
PS:у меня winxp на win 2000 тож работает

Всего записей: 55 | Зарегистр. 07-12-2005 | Отправлено: 08:56 13-01-2006
andyics

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Как к TIME прибавить например 1час 30 мин , какой формат времени ? если добавить 1 час  , делаю
set t=%TIME%
set /a t1=t+1
echo %t1%
получаются только часы , минут и секунд нет....

Всего записей: 3 | Зарегистр. 13-01-2006 | Отправлено: 14:44 13-01-2006
MasterTheMAC



BANNED
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
jak_forest
 
Проще вместо cmd /v:on внутри bat файла написать SETLOCAL ENABLEEXTENSIONS.
SETLOCAL /? - Помощь по SETLOCAL.

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



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

Код:
 
@Echo Off
Set tHour=%time:~0,2%
Set tMin=%time:~3,2%
 
Set tMin=45
Set tHour=23
 
Set /a tHour=%tHour%+1
Set /a tMin=%tMin%+30
 
If /i %tMin% GTR 60 ((Set /a tMin=%tMin%-60) & (Set /a tHour=%tHour%+1))
 
If /i %tHour% GTR 24 (Set /a tHour=%tHour%-24)
 
Set t
 

 
Добавлено:
Удали  

Код:
 
Set tMin=45  
Set tHour=23  
 

Это я для проверки перехода делал

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

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Как потом собрать это в одну переменную , чтобы как время подсунуть в at например ?

Всего записей: 3 | Зарегистр. 13-01-2006 | Отправлено: 15:15 13-01-2006
KapralBel



Platinum Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
andyics
Set tFullTime=%tHour%:%tMin%:00

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

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Разобрался...

Всего записей: 3 | Зарегистр. 13-01-2006 | Отправлено: 15:46 13-01-2006
DarkStar2000



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
есть файл *.ini
у которого много пустых строк
можно ли как нибудь удалить все пустые строки кроме тех которые разделяют секции
пример:
---------------------
 
[section1]
parametr1
 
 
 
parametr2
 
parametr3
 
 
 
 
 
[section2]
parametr1
 
 
 
 
 
 
parametr2
---------------------
нужно чтобы стало
---------------------
[section1]
parametr1
parametr2
parametr3
 
[section2]
parametr1
parametr2
---------------------

Всего записей: 239 | Зарегистр. 05-03-2003 | Отправлено: 17:22 13-01-2006
KapralBel



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

Код:
 
@Echo Off
 
Del Tmp.ini /q/f
Del Tmp1.ini /q/f
For /F %%a In (1.ini) Do Echo %%a >>tmp.ini
For /F %%a In (tmp.ini) Do Call :Sub1 %%a
GoTo :EOF
 
:Sub1
Set str=%1
Set str1=%str:~0,1%
If "%str1%"=="[" (Type empty >>tmp1.ini)
Echo %1>>tmp1.ini
GoTo :EOF
 

Должен быть еще один файл empty - сотоящий из одной пустой строки

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



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

Цитата:
Type empty >>tmp1.ini

 
Вместо этого можно написать echo. >>tmp1.ini, тогда никакого лишнего файла не надо.

Всего записей: 87 | Зарегистр. 17-10-2003 | Отправлено: 18:08 13-01-2006 | Исправлено: MasterTheMAC, 18:09 13-01-2006
KapralBel



Platinum Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
MasterTheMAC
Сенькаю - "век живи - век учись"
Я всегда делал echo . >> - и оно вставляла точку, если же нет проблелп между точкой и это - вставляет пустую строку

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

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Smitis  
 
 
 
Цитата:Но у меня не получается выти из зацикливания после %0, притом задачи выполняются непоследовательно а зацикливаются все задачи.....у меня открылось за пару секунд по 50 окон каждой задачи, мне нужна помощь, как это грамотно реализовать??????????    
 
Попробуй использовать, например, переменные.  
 
Код:  
@echo off  
if "level"=="1"  goto second  
:: здесь первая часть  
set level=1  
"%0"  
 
:second  
:: здесь вторая часть  
 
exit  
 
Идёт выполнение до сих пор......
@echo off  
if "level"=="1"  goto second  
:: здесь первая часть  
set level=1  
 
 а потом зацикливается """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" и вторую часть не выполняет?
 
Smitis  в чём может быть ошибка?
   

Всего записей: 4 | Зарегистр. 25-12-2005 | Отправлено: 22:43 13-01-2006
Smitis



Silver Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
asup
Надо символы % вокруг переменной:
if "%level%"=="1"  goto second  
Извини, это у меня была оЧеПятка  

Всего записей: 3216 | Зарегистр. 09-02-2003 | Отправлено: 15:15 15-01-2006
Zueuk

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

Цитата:
Zueuk  
по поводу циклов. где-то читал (дословно не помню, но суть вот такая) что при нахождении цикла вместо переменных в циклах значение подставляется ОДИН раз перед началом первого исполнения цикла (исключения составляют родные "цикличные" переменные тип %%i).  
 
Код:set Counter=0  
  FOR /F %%i IN ('dir /b /a-d /on D:\temp\*.txt') DO (  
echo %%i    
Set /a %%Counter=%Counter%+1 )  
echo %%Counter%  
 
в трансляции будет иметь вид  
 
Код:set Counter=0  
  FOR /F %%i IN ('dir /b /a-d /on D:\temp\*.txt') DO (  
echo D:\temp\.......txt    
Set /a %%Counter=0+1 )  
echo 1  
 
для приведения в нормальный вид этого кода надо запустить cmd /v:on  
и код подправить на  
 
Код:set Counter=0  
  FOR /F %%i IN ('dir /b /a-d /on D:\temp\*.txt') DO (  
echo %%i    
Set /a Counter=!Counter!+1 )  
echo %Counter%  
 
по крайней мере у меня в cmd /v:on  
работает  
 
Код:set count=0  
for /l %%i in (5,-1,1) do (  
echo %%i  
set /a count=!count!+%%i  
)  
echo %count%  
и выдает результат "15"  
в справке немного написано про режим расширения  
PS:у меня winxp на win 2000 тож работает

 
Спасибо. Это пригодится.

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

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Приветик. Кто-нубудь знает, можно ли в батнике прописать временную задержку в несколько секунд. Через команду Schtasks, если я правильно поняла, можно задать наименьший интервал – минута. Но это много. Или такую штуку можно сделать в скрипте.vbs.  
Спасибо.

Всего записей: 1 | Зарегистр. 18-01-2006 | Отправлено: 18:51 18-01-2006
MasterTheMAC



BANNED
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
nat13ya
 
Работает в win2000 и выше.  Зависит от формата времени в системе.
nSeconds - сколько секунд ждать (максимум 59).
 
set nCurrSeconds=%time:~6,2%
set /a nCheck=(nCurrSeconds+nSeconds)
if /i %nCheck% gtr 59 (set /a nCheck=nCheck-59)
:loop
if /i %time:~6,2% neq %nCheck% goto loop

Всего записей: 87 | Зарегистр. 17-10-2003 | Отправлено: 21:24 18-01-2006 | Исправлено: MasterTheMAC, 06:43 19-01-2006
jak_forest

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
nat13ya
можно еще использовать sleep или choice. не идут в стандартной поставке, но могу скинуть на e-mail (или если кто-нибудь объяснит как, то положить на этот сайт). еще проскакивали здесь где-то про варианты использования ping, но у меня не получалось через него сделать задержку.

Всего записей: 55 | Зарегистр. 07-12-2005 | Отправлено: 08:46 19-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.B0ard
© Ru.B0ard 2000-2024

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru