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

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

Модерирует : gyra, Maz

Widok (10-03-2009 12:39): Лимит страниц. Продолжаем здесь.  Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 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 102 103 104 105 106 107 108

   

Widok



Moderator-Следопыт
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Командная строка, батники\сценарии (bat, cmd)
(часть 1)
Вопросы, задачи и их решения по работе с командной строкой, файлами, а также сопутствующие ссылки.

 
Важно: копируя батник через буфер обмена из форума не забывайте удалять пробелы в конце каждой строки, т.к. в некоторых случаях из-за этого программа будет работать неправильно!!!
 
Примечание: Большие куски кода заключайте в тэг [more]  
 
Смежные темы:
В помощь системному администратору » Автоматизация администрирования
Microsoft Windows » Задачи на bat-файлах 5
 
Полезные ссылки:
· Cmd. Описание от разработчиков
· Урок bat-аники (для начинающих)
· Курс лекций для начинающих. Полезно и просто описано
· Набор GNU утилит для win32
· Пакет утилит для организации интерфейса в bat-файлах
· Использование ansi.sys
· cmdow — изменение параметров и видимости дос-окна
· blat — отправка почты из консоли
· Справка по командам в виде Html
· Команды RunDll32
· Quick Batch File Compiler - Позволяет превратить ваш батник в независимое приложение
· Пример - получение и обработка списка пользователей
· Уильям Станек - Командная строка Microsoft Windows (вплоть до w2k3)
· Простой способ получать текущую дату всегда в одном формате (не зависит от языков и настроек)
 
Старая версия первого сообщения

Всего записей: 24190 | Зарегистр. 07-04-2002 | Отправлено: 12:08 19-11-2007 | Исправлено: Dmitriy05, 22:49 13-04-2008
slide1

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
я сделал наконец, все работает:
 
ставлю винде задачу, запускается от SYSTEM
schtasks /create /ru system /tn 1cbk /tr c:\1cbk\1cbk.cmd /sc daily /st 03:00:00
 
от SYSTEM  оказался другой формат даты и времени типа Fri 03/21/2008  3:33:00.09
подстроившись все вышло > Base_Fri.03.21.2008_03-33-00-09.7z
 
cls
chcp 1251
set count=0
set filenametime=%time%
set filenametime=%filenametime: =0%
set filenametime=%filenametime::=-%
set filenametime=%filenametime:.=-%
set filenamedate=%date%
set filenamedate=%filenamedate: =.%
set filenamedate=%filenamedate:/=.%
set basefolder=c:\База
set archivefolder=c:\1cbk_arc
set tempfolder=c:\1cbk_tmp
set prfolder=c:\1cbk
 
rd /q /s %tempfolder%
md %tempfolder%
xcopy %basefolder%\*.* %tempfolder%\ /e
c:\progra~1\7-zip\7z.exe a -r -y -ssw %archivefolder%\Base_%filenamedate%_%filenametime%.7z %tempfolder%\>>%prfolder%\1cbk.log
 
dir %archivefolder%\ /b /o:-d>%prfolder%\filenames.tmp
for /f "tokens=*" %%I in (%prfolder%\filenames.tmp) do set filename=%%I & set filetime=%%~tI & set /a count+=1
erase %prfolder%\filenames.tmp
if /i %count% GTR 5 erase %archivefolder%\%filename% & echo file %filename% deleted at %date% %time%>>%prfolder%\1cbk.log
 
rd /q /s %tempfolder%
@echo on
 
в лог файл 1cbk.log инфа от 7zip выводится в DOS кодировке, хотелось бы в WIN
файл писал в блокноте, поэтому сменил кодировку на 1251

Всего записей: 47 | Зарегистр. 25-03-2005 | Отправлено: 04:02 21-03-2008
igor_andreev

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

Цитата:
dir %archivefolder%\ /b /o:-d>%prfolder%\filenames.tmp  
for /f "tokens=*" %%I in (%prfolder%\filenames.tmp) do set filename=%%I & set filetime=%%~tI & set /a count+=1  
erase %prfolder%\filenames.tmp  
if /i %count% GTR 5 erase %archivefolder%\%filename% & echo file %filename% deleted at %date% %time%>>%prfolder%\1cbk.log

А ты хочешь, чтобы оставалось пять самых новых файлов? У тебя так будет удаляться только самый последний. То есть будет в папке %archivefolder% сорок файлов - останется 39 и т.п. Правильнее так:

Код:

FOR /F "SKIP=5 TOKENS=*" %%I IN ('DIR /B /O:-D "%archivefolder%"\*.7z') DO (
  ERASE "%archivefolder%"\%%I
  ECHO file %%I deleted at %date% %time:~0,8%>>"%prfolder%\1cbk.log"
)

 
 
Добавлено:
P.S. Сам я солидарен по вопросу бэкапа 1С с Adramelek У меня уж лет наверно 5-6 nnCron этим занимается. Даже не помню уже, чем он там пакует и куда, кажется pkzip25.exe еще Надо завтра посмотреть на работе...

Всего записей: 1704 | Зарегистр. 08-12-2004 | Отправлено: 05:11 21-03-2008 | Исправлено: igor_andreev, 05:13 21-03-2008
alers

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Elroir спасиба
действительно проще юзать more)

Всего записей: 14 | Зарегистр. 09-07-2007 | Отправлено: 07:49 21-03-2008
slide1

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
igor_andreev Супер! код еще меньше, спасибо!
 
Добавлено:
Уже купили программу http://backupper.ru/products/keeper5_serverSQL.htm
Пока она поставляется попросили временно сделать батник
 
Мне понравилось решение на батнике, может поставлю на следующие серваки.
 
Какие + - у Cron для такой задачи ?
 
могут быть ошибки копирования, архивирования, сервак может вырубится (упс сдох) зависнуть, что еще ? - в батнике такие случаи не мониторятся, а в Cron ?
 
на Win Server 2003 - получается архив включающий первую папку "1cbk_tmp"
c:\progra~1\7-zip\7z.exe a -r -y -ssw %archivefolder%\Base_%filenamedate%_%filenametime%.7z %tempfolder%\>>%prfolder%\1cbk.log
- и в лог файле было сообщение Warning Access Denied - и путь к папке, из которой я установил 7-zip o_O
 
на XP  - просто повисает 7-zip, пока не добавить * - и архив без папки "1cbk_tmp" готов, также и на 2003 с * "готов"
c:\progra~1\7-zip\7z.exe a -r -y -ssw %archivefolder%\Base_%filenamedate%_%filenametime%.7z %tempfolder%\*>>%prfolder%\1cbk.log
 
- почему такое происходит непонятно в Win Server 2003

Всего записей: 47 | Зарегистр. 25-03-2005 | Отправлено: 09:02 21-03-2008
igor_andreev

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

Цитата:
Уже купили программу

Описание улыбнуло. Абсолютно все ты можешь сделать батником + пару-тройку утилит консольных, особо и не за что там деньги платить. Не знаю только насчет архивирования открытых баз SQL, не пробовал.

Цитата:
Какие + - у Cron для такой задачи ?

Минус у nnCron один, но жирный - он не умеет кофе приносить. Приходится самому носиться как пчелке по офису, чайник в одном конце, сахар в другом, блин... Да ты скачай-посмотри-хэлп почитай http://nncron.ru/index_ru.shtml Этот "Хранитель V для сервера" - детский лепет по сравнению с ним.

Цитата:
в батнике такие случаи не мониторятся, а в Cron ?  

И в батнике мониторятся, errorlevel никто не отменял, а приличные консольные утилиты его всегда возвращают.

Цитата:
- почему такое происходит непонятно в Win Server 2003

Тут не знаю, у меня нет сейчас сервера
 
 
 
 
 
Добавлено:
Кстати у nnCron-a есть младший "братан" под именем nnCron LITE, он бесплатен и для коммерчеcкого использования, им тоже можно батники запускать

Всего записей: 1704 | Зарегистр. 08-12-2004 | Отправлено: 11:21 21-03-2008
slide1

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
igor_andreev
 
  Для этой простой задачи, предполагаю, шедулер винды подходит лучше, родной все-таки, наверняка жрет меньше ресурсов, все равно запущен, если службу не остановить, а Cron + еще процесс, и зачем ?
 
Мне понравилось что в шедулере можно запускать от SYSTEM, без логона все пашет

Всего записей: 47 | Зарегистр. 25-03-2005 | Отправлено: 18:06 21-03-2008
KfarYm

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Гуру`s, объясните зачем используется перенаправление в нуль `>nul`
и если не сложно - пример, где без этого не работает

Всего записей: 34 | Зарегистр. 13-08-2005 | Отправлено: 19:36 21-03-2008
slide1

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
для архивации нескольких баз сделал два пакетника, круто все )
--------------------------------
rem 1cbk_st.cmd
 
rem basefolder1 = c:\База = c:\8C54~1
rem basefolder2 = c:\База8\ = c:\84EA5~1
 
rem archivefolder1=c:\1cbk_arc\base
rem archivefolder2=c:\1cbk_arc\base8
 
call c:\1cbk\1cbk.cmd c:\8C54~1 c:\1cbk_arc\base base
call c:\1cbk\1cbk.cmd c:\84EA5~1 c:\1cbk_arc\base8 base8
 
--------------------------------
rem 1cbk.cmd
 
set filenametime=%time%
set filenametime=%filenametime: =0%
set filenametime=%filenametime::=-%
set filenametime=%filenametime:.=-%
set filenametime=%filenametime:,=-%
set filenamedate=%date%
set filenamedate=%filenamedate: =.%
set filenamedate=%filenamedate:/=.%
set basefolder=%1%
set archivefolder=%2%
set filenamename=%3%
set tempfolder=c:\1cbk_tmp
set prfolder=c:\1cbk
 
rd /q /s %tempfolder%
md %tempfolder%
xcopy %basefolder%\*.* %tempfolder%\ /e
c:\progra~1\7-zip\7z.exe a -r -y -ssw %archivefolder%\%filenamename%_%filenamedate%_%filenametime%.7z %tempfolder%\*>>%prfolder%\1cbk.log
 
for /f "skip=5 tokens=*" %%i in ('dir /b /o:-d "%archivefolder%"\*.7z') do (
  erase "%archivefolder%"\%%i
  echo file %%i deleted at %date% %time:~0,8%>>"%prfolder%\1cbk.log"
)
 
rd /q /s %tempfolder%

Всего записей: 47 | Зарегистр. 25-03-2005 | Отправлено: 20:27 21-03-2008
Elroir



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
KfarYm
Перенаправления в nul используется, чтобы скрыть вывод команд, когда он не нужен. Например, при использовании команды ping, меня интересует не вывод информации, а код возврата (прошел пинг или нет). При этом удобнее скрыть вывод команды. Также перенаправление в nul очень удобно, когда надо скрыть вывод ошибок при исполнении команд.

----------
"В интернете есть все, но не всегда"

Всего записей: 2631 | Зарегистр. 05-02-2003 | Отправлено: 22:01 21-03-2008
KfarYm

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

Всего записей: 34 | Зарегистр. 13-08-2005 | Отправлено: 23:09 21-03-2008
d per



Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Подскажите еще пожалуйста, а можно сделать скрипт, который бы поднимал на передний план заданное окно?
 
 
 
Извините за глупый вопрос про крон- случайно скачал lite версию... поэтому и не нашел сразу про логин от имени.

Всего записей: 8 | Зарегистр. 16-03-2008 | Отправлено: 23:57 21-03-2008
Elroir



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
d per
Я думаю можно - с помощью спец. утилит. Посмотри утилиту cmdow (ссылка есть в шапке) - она умеет активировать окна.

----------
"В интернете есть все, но не всегда"

Всего записей: 2631 | Зарегистр. 05-02-2003 | Отправлено: 00:05 22-03-2008
Adramelek

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
slide1
nnCron позволяет сделать вообще ВСЁ ЧТО УГОДНО, ты хоть в исходники загляни, это же Forth. Иными словами, скачивая его, ты получаешь одновременно интерпретатор и компилятор ЯВУ, не уступающего по возможностям любому иному, однако специально адаптированный для определённых задач, -- как раз тех, что нам и нужны. Это не Sheduler, возможности тут буквально безграничны, а потеря памяти, -- считанные килобайты, там же байт-код. Ну пусть даже сто килобайт, -- мы, вроде как, все не на 386-ых сидим тут, время этих объёмов давно прошло.

Всего записей: 6 | Зарегистр. 31-10-2007 | Отправлено: 05:08 22-03-2008 | Исправлено: Adramelek, 05:16 22-03-2008
Takuja

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Парни, как определить размер папки? ваще блин, майкрософт афигели...  
 
вообщем дайте ссылку, я думаю что этот вопрос уже подним ался тут, но я чего то не нашол, 4 часа потратил.  
Нада просто список  
dir d:
но что бы был еще и размер папок.

Всего записей: 64 | Зарегистр. 11-02-2008 | Отправлено: 14:02 22-03-2008
igor_andreev

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

Код:

chcp 1251
du -v -q d:\

http://technet.microsoft.com/en-us/sysinternals/bb896651.aspx

Всего записей: 1704 | Зарегистр. 08-12-2004 | Отправлено: 16:27 22-03-2008
01MDM



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

Код:

du -q -l 1 d:\

 
 
Добавлено:
igor_andreev
 
Долго ковырялся :-)

Всего записей: 2638 | Зарегистр. 13-02-2006 | Отправлено: 16:31 22-03-2008 | Исправлено: 01MDM, 17:17 22-03-2008
igor_andreev

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Вот еще, показывает и файлы и папки и их размер сразу
http://gammon.com.au/utilities/treeinfo.htm

Всего записей: 1704 | Зарегистр. 08-12-2004 | Отправлено: 18:12 22-03-2008
XXXXL



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Ребята, есть у кого нибудь соображения, как можно снять в указанном месте экрана скриншот, через командную строку.
Зарание благодарен.

Всего записей: 286 | Зарегистр. 16-05-2007 | Отправлено: 18:40 22-03-2008
igor_andreev

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
XXXXL
В указанном месте не знаю, а скриншот активного окна или всего экрана из комстроки умеют делать и xnView и IrfanView

Код:

xnview.exe -capture=window,d:\screenshot_$.jpg
xnview.exe -capture=desktop,d:\screenshot_###.jpg
 
IrfanView сейчас у меня нет, комстроку не помню, справку читайте

Всего записей: 1704 | Зарегистр. 08-12-2004 | Отправлено: 19:26 22-03-2008
XXXXL



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
igor_andreev ,
пишет что xnview.exe не является внутренней и внешний командой......
 
я скачал, установил xnview и IrfanView. но без результата. Я даже указывал полный путь C:\Program Files\XnView\xnview.exe
 
что я сделал не так?

Всего записей: 286 | Зарегистр. 16-05-2007 | Отправлено: 20:37 22-03-2008
   

Страницы: 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 102 103 104 105 106 107 108

Компьютерный форум Ru.Board » Компьютеры » Программы » Командная строка, батники, сценарии (bat, cmd) 2
Widok (10-03-2009 12:39): Лимит страниц. Продолжаем здесь.


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

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.B0ard
© Ru.B0ard 2000-2024

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru