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

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в 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
Скорее всего по нахождению в папке - включи сортировку по имени
FOR /F %%i IN ('dir /b /a-d /on D:\temp\*.txt') DO (echo %%i)

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

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Zueuk
 
а еще можно сделать сортирвоку по дате создания
FOR /F %%i IN ('dir /b /a-d /o-d D:\temp\*.txt') DO (echo %%i)
в этом случае самый новый файл (или тот который последним редактировался) окажется на первой строчке.

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

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
KapralBel,jak_forest
Оба варианта подходят.
 
А второй вариант (пол дате создания) на моих примерах выдал
 
31223.txt
41223.txt
11223.txt
21223.txt
 
Хотя дата создания у всех файлов одна и та же (один файл переименовывал).
Опять микрософт чудит...

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



Platinum Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Zueuk
Если дата создания одна и таже - то сортировка идет по вхождению в каталог
ФАР Менеджер есть?
Нажми там Ктрл+Ф7 - получишь тот же результат

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

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
KapralBel
По вхождению в каталог, т.е. порядок добавления в каталог? Об этом не подумал.
 
PS Есил читал мой пост микрософт, то извини

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



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

Цитата:
По вхождению в каталог, т.е. порядок добавления в каталог

Не обязательно
Порядок следования файлов в каталоге (какая запись первая). При добавлении очередного файла вовсе не обязательно, что бы он занял первую свободную позицию в каталоге

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

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
KapralBel
Понятно.
 
Еще вопрос.
Сделал вот такую конструкцию:
 
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%
 
Она не работает. Вообщем наугад писал, т.к. о работе "циклов" (если вообще есть такое понятие в батниках) в описании ничего нет.
 
Идея: подсчитать количество файлов.
 
PS Посоветуйте что-нить почитать толковое и наиболее полное о батах. Есть chm файл стандартный, но его явно не хватает, приходится догадываться. А это время съедает, а время - деньги...

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

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

Код:
dir /b /a-d /on D:\temp\*.txt | find /C "txt"



----------
Ребята, давайте жить дружно. Кот Леопольд

Всего записей: 1116 | Зарегистр. 22-07-2004 | Отправлено: 16:22 12-01-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
   

Страницы: 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