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

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



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

Цитата:
Помогите оптимизировать данный батник

По поводу пунктов 1) и 3), думаю это решает следующий состав:
 

Код:
 
@echo off
 
find /I "RarPath" config.ini > config.tmp
for /f "delims=" %%a in (config.tmp) do set RarPath1=%%a
Set RarPath=%Rarpath1:~+8%
 
find /I "TempPath" config.ini > config.tmp
for /f "delims=" %%a in (config.tmp) do set TempPath1=%%a
Set TempPath=%TempPath1:~+9%
 
find /I "Source" config.ini > config.tmp
for /f "delims=" %%a in (config.tmp) do set Source1=%%a
Set Source=%Source1:~+7%
 
find /I "Dest" config.ini > config.tmp
for /f "delims=" %%a in (config.tmp) do set Dest1=%%a
Set Dest=%Dest1:~+5%
 
Del /q /f config.tmp
 
C:  
cd %Source%
%RarPath%\rar.exe a -o+ -r %TempPath%\backup.rar *.*  
copy %TempPath%\backup.rar %Dest%\
E:  
cd %Dest%\
del /f /q %TempPath%\backup.rar
del /f /q backup5.rar
ren backup4.rar backup5.rar
ren backup3.rar backup4.rar
ren backup2.rar backup3.rar
ren backup1.rar backup2.rar
ren backup.rar backup1.rar
C:
cd %RarPath%

 
файл *.ini должен иметь имя Config.ini, и содержать следующие строчки:
 

Код:
RarPath=C:\1c
TempPath=E:\1c\torg_back\temp
Source=C:\1c\torgbase\  
Dest=E:\1C\torg_back

 
Думаю прописать нужные пути не составит труда
 
А по поводу пунктов 2) и 4), не совсем понятно, что должно происходить после ответа на вопрос, и как именно переименовывать архивы?
 
Elroir
 

Цитата:
это скомпилированный AutoIt скрипт?

Да, исходник смотри в ПМ, а то уже как-то не в тему получается

----------
ViSiToR a.k.a CreatoR
CreatoR это не ник, CreatoR это стиль жизни!

Всего записей: 3251 | Зарегистр. 01-04-2006 | Отправлено: 23:36 13-10-2006 | Исправлено: ViSiToR, 23:40 13-10-2006
2life

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Спасибо за пункты 1 и 3!
 

Цитата:
А по поводу пунктов 2) и 4), не совсем понятно, что должно происходить после ответа на вопрос, и как именно переименовывать архивы?  

Поправки к п.2 и п.4
2) Нажимаем Y, скрипт начинает свою работу. Надпись такая "Вы завершили работу 1с локально и по сети?", если N нажали то выход из cmd.
4) Ничего переименовывать не нужно, это просто "старое решение" такое, нужно что бы хранилось только 5 последних копий бекапа. И все они были с датой в имени.

Всего записей: 86 | Зарегистр. 04-08-2006 | Отправлено: 23:55 13-10-2006
ViSiToR



Silver Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
2life
 
2) В начало скрипта пропиши такие строчки:
 

Код:
 
chcp 1251
:again
if exist ask.tmp echo Наберите N для выхода, или Y для продолжения...
echo.
echo "Вы завершили работу 1с локально и по сети?"
 
copy /y con ask.tmp > nul
for /f %%I in (ask.tmp) do if /i %%I==n goto ext
for /f %%J in (ask.tmp) do if /i not %%J==y goto again
del /q /f ask.tmp
goto next
 
:ext
del /q /f ask.tmp
exit
 
:next
 

 
После ввода буквы N (именно ввод, нажимать нечего, так как это всё таки батник ), нужно нажать F6, а потом Enter, иначе будет ошибка (перевод строки). Если сильно нужно будет, то завтра залью утилиту (она очень мелкая), которая позволяет обходиться без нажимания F6.
Если ввести что-то другое (не N), то батник продолжит своё действие сначала.
 
4) Завтра, а то уже ума не приложу - а вообще, поищи пару страниц назад, помнится там уже были подобные решения.
 
Добавлено:
Перезалил утилиту Sleep2Sht - Там была серъёзная ошибка, сейчас вроде всё работает безупречно...
 
Если вторая ком. строка не указана, то после пробуждения ничего не произойдёт, а если в батнике прописать команду так:
 

Код:
start /wait путь\к\программе\Sleep2Sht 60-m /fs

 
То это позволит батнику “дождаться” пробуждения утилиты, и приступить (при необходимости) к другимм действиям (прописаныи далее в батнике).

----------
ViSiToR a.k.a CreatoR
CreatoR это не ник, CreatoR это стиль жизни!

Всего записей: 3251 | Зарегистр. 01-04-2006 | Отправлено: 00:22 14-10-2006 | Исправлено: ViSiToR, 00:27 14-10-2006
2life

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

Цитата:
Если сильно нужно будет, то завтра залью утилиту (она очень мелкая), которая позволяет обходиться без нажимания F6.  
Если ввести что-то другое (не N), то батник продолжит своё действие сначала.  

Хорошо подожду до завтра...

Всего записей: 86 | Зарегистр. 04-08-2006 | Отправлено: 01:08 14-10-2006
Elroir



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
2life
Для запроса диалогом, завершил ли пользователь работу с 1с, можно использовать
утилиту HS_MESSAGE из пакета утилит для организации интерфейса в bat-файлах (из шапки).

Код:
 
chcp 1251
HS_MESSAGE "Вы завершили работу 1с локально и по сети?" "Backup" Q YESNO
IF ERRORLEVEL 7 GOTO exit
...
..вся остальная работа batch файла
...
:exit
 

Выглядит вот так:
 

Всего записей: 2631 | Зарегистр. 05-02-2003 | Отправлено: 03:17 14-10-2006
2life

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Пункт 2 решился) Спасибо!
Единственное что в дос окне текст отображается крякозябрами, в диалоге правда все нормально. Осталось с 4 пунктом разобраться.

Всего записей: 86 | Зарегистр. 04-08-2006 | Отправлено: 11:13 14-10-2006
Elroir



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
2life
Пункт 4 - основан на варианте ViSiToR-а:

Код:
 
del /q /f %TempPath%\backup_*.rar
%RarPath%\rar.exe a -o+ -r -ag_YYMMDD %TempPath%\backup.rar *.*  
copy %TempPath%\backup_*.rar %Dest%\  
E:  
cd %Dest%\  
del /f /q backup_*_5.rar 2>nul
ren backup_*_4.rar backup_*_5.rar 2>nul
ren backup_*_3.rar backup_*_4.rar 2>nul
ren backup_*_2.rar backup_*_3.rar 2>nul
ren backup_*_1.rar backup_*_2.rar 2>nul
ren backup_??????.rar backup_??????_1.rar
 

До запуска архиватора, в темп-папке удаляются все RAR-файлы начинающиеся на "backup"

Всего записей: 2631 | Зарегистр. 05-02-2003 | Отправлено: 21:20 14-10-2006 | Исправлено: Elroir, 21:25 14-10-2006
FXPELIVE

Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Помогите решить две задачки:
 
@echo off
color 0C
title %TMP%
 
echo Задачка 1
echo Проблема в том, что мне нужно при наличии доступа к интернету с помощью Wget.exe скачать файл update.rar Писать под Windows XP (если есть желание, то и под Windows 95/98)
 
echo Задачка 2
echo Как определить Версию операционной системы и в случае определения выполнить некий пакетный файл, и если MS-DOS то msdos.bat, если Windows 95 то win95.bat, если Windows 98 то win98.bat, если Windows XP  то winxp.bat

Всего записей: 348 | Зарегистр. 27-04-2006 | Отправлено: 13:44 15-10-2006
Smitis



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

Цитата:
echo Задачка 2  
echo Как определить Версию операционной системы и в случае определения выполнить некий пакетный файл, и если MS-DOS то msdos.bat, если Windows 95 то win95.bat, если Windows 98 то win98.bat, если Windows XP  то winxp.bat

Что-то вроде

Код:
 
@echo off
ver | find "Microsoft Windows XP" > nul
if not errorlevel 1 goto win_xp
echo UNKNOW
goto end
 
:win_xp
echo WINDOWS XP
call win_xp.bat
goto end
 
:end
 

Остальные оси добавь сам.
Ключевым моментом является команда VER и обработка её вывода командой FIND с дальнейшей проверкой кода возврата.
 
Добавлено:

Цитата:
echo Задачка 1  
echo Проблема в том, что мне нужно при наличии доступа к интернету с помощью Wget.exe скачать файл update.rar Писать под Windows XP (если есть желание, то и под Windows 95/98)

Для проверки доступа можно попробовать использовать код возврата команды PING (пинговать известный стабильный сайт).

Всего записей: 3464 | Зарегистр. 09-02-2003 | Отправлено: 14:04 15-10-2006
FXPELIVE

Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Smitis
Цитата:
Для проверки доступа можно попробовать использовать код возврата команды PING (пинговать известный стабильный сайт).

Пожалуйста, распиши поподробнее.

Всего записей: 348 | Зарегистр. 27-04-2006 | Отправлено: 14:20 15-10-2006
Elroir



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
FXPELIVE
Smitis
Ping не всегда правильно выдает код возврата. Достаточно распространенный способ проверки - это сочетание команды ping и find

Код:
 
PING server | FIND "TTL=" >NUL
IF ERRORLEVEL 1 GOTO Error
..
..
..
goto Exit
:Error
echo Server is not available
:Exit
 

 
 
Добавлено:
В качестве сервера можно взять, например, www.google.com

Всего записей: 2631 | Зарегистр. 05-02-2003 | Отправлено: 16:02 15-10-2006 | Исправлено: Elroir, 17:31 15-10-2006
evle



1 + int rand(100);
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
По поводу чтения настроек батника из ini-файла.
Разбирать именно формат ini мне было лень, но более простой вариант у меня работает так:

Код:
 
setlocal enabledelayedexpansion
for /f "eol=# tokens=*" %%i in (settings.conf) do set %%i
 

В результате можно пользоваться переменными, указанными в файле настроек, в файле настроек можно пользоваться ранее установленными переменными и переменными среды; для этого их нужно взять в восклицательные знаки. Соответственно, восклицательных знаков не должно быть в именах и значениях переменных. Символ "#" означает начало комментария.
Пример файла settings.conf:

Код:
 
# Конфигурация программы ххх
maindir=!windir!
logs=!maindir!\logs
number=3 # Комментарий
 

Можно обрабатывать и ini-файлы, если изменить символ комментария на ";", при этом параметров с одинаковыми названиями не должно быть в разных секциях. (Строки в файле настроек, не содержащие знака "=" не влияют на выполнение батника, хотя и выводят ошибку.

----------
For every complex problem, there is a solution that is simple, neat, and wrong.

Всего записей: 2110 | Зарегистр. 03-02-2005 | Отправлено: 16:38 15-10-2006
Snerov1k

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
А можно сделать так: - при первом запуске батника выводятся запросы - (прописать пути и размер макс строки архива(для винрара)) потом записывает это все в лог и в последующем будет брать инфу оттуда.  
 
ЗЫ немного не в тему но.. А может есть программы , что то типа для создания install.exe что бы при установке можно было указывать пути и параметы, которые в последующем в файли(батник) навсегда пропишуться?
 

Всего записей: 5 | Зарегистр. 12-10-2006 | Отправлено: 17:05 15-10-2006 | Исправлено: Snerov1k, 18:11 15-10-2006
Imagoham

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Сорри что сразу сюда не зашёл.. - создал новую тему.
 
Вопрос по существу:
 
Имеется система с WinXP SP2 и туда ставится Office 2003 SP2 (административная установка) - Office за собой тянет немало шрифтов, 90% которых НЕ кириллические. Имеется набор таких же шрифтов только нормальных - кириллических, но при попытке инсталляции (или просто создания ярлыков) средствами Винды - последняя ругается - дело в том что имена шрифтов тех и других по большей части совпадают.  
Прощёлкать шрифты и поудалять их вслед за установкой Office на одной машине можно, хоть и долго - но машин 18 (!), это ОЧЕНЬ долго.  
Мож у кого скрипт есть или батничек подходящий??  
 
ЗЫ. Пробовал WinRAR.SFX - дохлый номер - говорит угу и всё - папка Font наполовину убита - шрифты есть, но не читаются.  
 
Установка нужна из командной строки.

Всего записей: 18 | Зарегистр. 21-01-2006 | Отправлено: 21:03 15-10-2006
loat



Junior Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Помогите пожалуйста.
Нужно написать такой батник чтобы он удалял файлы текущего каталога, имена которых начинаются с буквы, указанной в качестве параметра. Для каждого файла случае успешного удаления выдавать сообщение: «Удален файл (имя_файла)». В случае неудачи выдавать сообщение: «Файл (имя_файла) защищен от удаления. Удалить его?» и в случае ответа «Д» или «Y» все-таки удалить файл.

Всего записей: 89 | Зарегистр. 24-01-2005 | Отправлено: 23:22 15-10-2006
Elroir



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
loat
Запрос нужен в командной строке или графический (диалогом) ?

Всего записей: 2631 | Зарегистр. 05-02-2003 | Отправлено: 01:07 16-10-2006
loat



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

Всего записей: 89 | Зарегистр. 24-01-2005 | Отправлено: 01:33 16-10-2006
Kronix

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
помогите с задачкой, нужно перенести файлы в папку Ready
:: Переносим в папку Ready
FOR %%c in ( *.rar ) do (
 set NameRar=%%c
 FOR /L %%j in (1,1,100) do (
  if exist ..\Ready\%NameRar% (set NameRar=%%~nc%%j.rar)
 )
 move %%c ..\Ready\%NameRar%
)
Неправильно работает (пытаюсь к имени файла добавить номер, если такой уже существует)

Всего записей: 107 | Зарегистр. 21-03-2006 | Отправлено: 06:15 16-10-2006
Elroir



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Какие errorlevels возвращает команда del?

Всего записей: 2631 | Зарегистр. 05-02-2003 | Отправлено: 06:40 16-10-2006
Craager



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Люди, задача для 1 класса вообще (((
 
Есть 3 файла:
 
Первый: .reg ФАЙЛ, который вносит инфу в реестр без запроса с помощью батника
Второй: сам батник
Третий: ярлык интернета
 
Всё это добро заархивировано в .SFX архив винрара, который в свою очередь запускает батник скрыто.
 
Так вопрос в том, что в батнике прописать нужно, чтобы была пауза секунды 3-4 между внесением в реестр и запуском ярлыка интернета.

Всего записей: 389 | Зарегистр. 08-06-2006 | Отправлено: 08:48 16-10-2006 | Исправлено: Craager, 08:57 16-10-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