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

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

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

Widok (03-03-2010 16:29): Лимит страниц. Продолжаем здесь.  Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 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

   

Widok



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

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

Всего записей: 24190 | Зарегистр. 07-04-2002 | Отправлено: 12:38 10-03-2009 | Исправлено: TechnicsKuzya, 13:54 27-12-2009
Zakkazak



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
01MDM
А как надо проинстолировать SED, чтоб интерпретатор его видел. Инсталятор предложил установить в :\Program Files\GnuWin32\, так и сделал, но скрипт в таком случае не находит SED.  
Скопировал sed.exe в :\WINDOWS\system32\ , на этот раз скрипт не выдавал ошибку, но все равно без результата...
Глянь еще разок плз...

Всего записей: 995 | Зарегистр. 12-01-2005 | Отправлено: 23:10 11-04-2009
01MDM



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Zakkazak
Если ты sed брал на http://gnuwin32.sourceforge.net/packages/sed.htm, то просто помести сам sed.exe и две dll-ки (libiconv2 и libintl3) в одно из мест, прописанных в переменной %PATH% (посмотреть можно командой `path`) и все должно работать.  
 
Я для сторонних утилит создал отдельный каталог и прописал переменную %PATH% в HKCU\Environment с путем к этому каталогу. Это же можно проделать через свойства "Моего Компьютера", вкладка Дополнительно > Переменные Среды > Переменные среды пользователя.

Всего записей: 2638 | Зарегистр. 13-02-2006 | Отправлено: 00:13 12-04-2009
Zakkazak



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

Цитата:
помести сам sed.exe и две dll-ки (libiconv2 и libintl3) в одно из мест, прописанных в переменной %PATH% (посмотреть можно командой `path`) и все должно работать.

во-во точно так и сделал по интуиции - только без результатно  
 
В WebDown-е из 96 секций должно остаться 6, только в них есть Descr=
увы, число секций не уменьшилось, хотя скрипт работал
 
P.S.
Сам скрипт поместил в папку обрабатываемого файла. Пробелы из скрипта удалил с помощью сценария Нагуала.

Всего записей: 995 | Зарегистр. 12-01-2005 | Отправлено: 01:49 12-04-2009
NvvLazyTiger



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Zakkazak Скрипт на AWK (WebDown.Awk):
Код:
BEGIN{
#  a2save                       # массив сохраняемых строк
  f2save=0                      # флаг "сохранять секцию"
  n2save=0                      # счётчик сохраняемых строк
}
 
function d2save ( j ) {   # выдача сохранённой секции на StdOut
  print "[Object]"              # шапка секции
  for ( n=1; n<=j; n++ ) print a2save[ n ]
  return 0
}
 
{                               # просмотр строк входного файла
  if ( $0 == "[Object]" ) {     # если это шапка, то
    if ( f2save ) d2save( n2save )  # если предыдущая секция ОК
    f2save=0                    # скинем счётчик
    n2save=0                    # скинем флаг
  } else {
    if ( substr( $0, 1, 6 ) == "Descr=" ) f2save++ #взведём флаг
    n2save++                    # увеличим счётчик
    a2save[ n2save ] = $0       # запомним строку
  }
}
 
END{
  if ( f2save ) d2save( n2save )  # если последняя секция ОК
}
 
Запуск:
Код:
gAwk -f WebDown.Awk WebDown.dat >WebDown.Ok
В WebDown.Ok только нужные секции.

Всего записей: 242 | Зарегистр. 14-02-2009 | Отправлено: 06:52 12-04-2009
Rush

Уже за тридцать...
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Zakkazak
По-моему, гораздо проще сделать так (VBS):

Код:
 
fname = "WebDown.dat":fname2 = "WebDown.ok"
set fso = createobject("scripting.filesystemobject")
set txtfile = fso.opentextfile(fname)
txt = txtfile.readall:txtfile.close
arr = split(txt,"[Object]"):arrdesc = filter(arr,"Descr=")
str = left(arr(0),instr(arr(0),"ObjectsCount=")+12) & cstr(ubound(arrdesc)+1) & vbcrlf
set txtfile = fso.opentextfile(fname2,2,true)
txtfile.write str & "[Object]" & join(arrdesc,"[Object]"):txtfile.close
 
 

Всего записей: 3551 | Зарегистр. 20-11-2003 | Отправлено: 08:30 12-04-2009
01MDM



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Zakkazak
Я еще раз проверил, вроде все отрабатывает. А nircmd.exe у тебя есть? И прописан в скрипте жестко полный путь:

Цитата:
 
nircmdc inidelsec "Full\Path\To\~WebDown.ini" "Object-%1"
 

Можно конечно его и автоматом определять. Если у тебя батник рядом с обрабатываемыми файлами:

Код:
 
nircmdc inidelsec "%~f0~WebDown.ini" "Object-%1"
 
или
 
nircmdc inidelsec "%cd%\~WebDown.ini" "Object-%1"
 


Всего записей: 2638 | Зарегистр. 13-02-2006 | Отправлено: 08:42 12-04-2009
Zakkazak



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Спасибо всем за мозговой штурм! Задача минимум выполненна .
 
01MDM

Цитата:
И прописан в скрипте жестко полный путь:  
nircmdc inidelsec "Full\Path\To\~WebDown.ini" "Object-%1"
Да, я как-то не заметил, вся проблема была в пути. Скрипт долго выполняется - около 2-х минут в отличии от vbs-скрипта.
 
Rush
Большющий риспект ! Впечатлен возможностью VBS, скрипт парсит файл за доли секунд
Надеюсь что поможешь и в задаче максимум....

Всего записей: 995 | Зарегистр. 12-01-2005 | Отправлено: 13:36 12-04-2009
guru431

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

Цитата:
Нужна помощь:  
 
Есть путь в реестре:  
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Security Center\Svc\%%A ,  
где %%A - ID пользователя, их может быть несколько  
На раздел Svc права ограничены даже админам.  
 
Вопрос:  
Как дать группе администраторов права на запись в эти разделы (надо вначале стать владельцем раздела) и во всех %%A создать следующий ключ с параметром "EnableNotifications"=dword:00000000 ?

 
C правами разобрался, осталось только добавить ключи.
 
Может кто-нибудь всё-таки знает???
 
Может, если не получается напрямую, то использовать:
REG EXPORT "HKLM\SOFTWARE\Microsoft\Security Center\Svc" Key.reg
Файл будет выглядеть так:

Цитата:
Windows Registry Editor Version 5.00
 
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Security Center\Svc]
"AntiVirusOverride"=dword:00000000
"AntiSpywareOverride"=dword:00000000
"FirewallOverride"=dword:00000000
"VistaSp1"=hex(b):b2,e0,d6,23,d7,5b,c8,01
 
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Security Center\Svc\S-1-5-21-688301636-752684984-1148191595-1003]
"EnableNotificationsRef"=dword:00000002
 
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Security Center\Svc\S-1-5-21-688301636-752684984-1148191595-500]
"EnableNotificationsRef"=dword:00000004
 
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Security Center\Svc\Vol]
 

добавить в этот файл "EnableNotifications"=dword:00000000 в следующую строчку после каждой закрывающей скобки - " ] "
А потом просто экспортировать этот файл обратно в реестр.
 
Или есть еще какой-нибудь способ?!

Всего записей: 64 | Зарегистр. 28-02-2007 | Отправлено: 15:30 12-04-2009
Rush

Уже за тридцать...
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Zakkazak

Цитата:
Надеюсь что поможешь и в задаче максимум....

Честно говоря, не представляю о чем речь...

Всего записей: 3551 | Зарегистр. 20-11-2003 | Отправлено: 16:42 12-04-2009
Zakkazak



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Задача максимум
 
1)Нужно чтоб скрипт сперва посмотрел запущен ли OE.exe, если запущен закрыл бы  OE.exe
"%ProgramFiles%\Offline Explorer Enterprise\OE.exe" /exit
 
2)после зарытия OE.exe, скрипт смотрит в реестр:
hkcu\Software\MetaProducts\Offline Explorer MX\Parameters  
берёт из строкового параметра CurrentDir значение (путь где храниться WebDown.dat)
3) Далее в скрипте который ты написал будет использоваться этот путь из пункта 2
 
4)После парсинга, WebDown.dat перемещается в .\Temp\  .  Нужно чтоб OE.exe запустился с базой WebDown.ok.  Для этого у него должно быть расширение .dat. Переименовывает
5)После этого запускаеться "%ProgramFiles%\Offline Explorer Enterprise\OE.exe"
 
 
Смысл пунктов 2) и 3) в том что, в скрипте использовался не текущий путь, а путь из реестра

Всего записей: 995 | Зарегистр. 12-01-2005 | Отправлено: 19:15 12-04-2009
Rush

Уже за тридцать...
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Zakkazak

Цитата:
Задача максимум  

Как-то так, наверное...  
Это, конечно, не отлажено пока.

Всего записей: 3551 | Зарегистр. 20-11-2003 | Отправлено: 21:36 12-04-2009
Zakkazak



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Rush
Протестил скрипт:
 
  Скрипт убивает процесс, а надо чтоб закрыл программу и ждал пока программа полностью не завершиться.  В 1-ом пункте, у программы есть ключ /exit для закрытия.
  Желательно чтоб папка Temp создавалась внутри директории, которая береться из реестра.
  Также выдаеться ошибка, если в папке Temp уже существует WebDown.dat
 

Всего записей: 995 | Зарегистр. 12-01-2005 | Отправлено: 23:53 12-04-2009
TruLander100

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
всем привет)) у меня есть такая вот задачка:  
имеется куча папок
в каждой папке имеется по куче файлов
нужно чтоб в каждой из этих папок было созданы папки скажем "123" и все файлы были перенесены в них т.е если
было                                          C:\1\1\файлы                              C:\1\1\123\файлы
                                                 C:\1\2\файлы                              C:\1\2\123\файлы  
                                                 C:\1\3\файлы то чтоб стало так    C:\1\3\123\файлы
Плиз)) кто чем поможет , Заранее спасибо)).

Всего записей: 24 | Зарегистр. 22-03-2009 | Отправлено: 02:16 13-04-2009 | Исправлено: TruLander100, 02:18 13-04-2009
Rush

Уже за тридцать...
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Zakkazak

Цитата:
Скрипт убивает процесс, а надо чтоб закрыл программу и ждал пока программа полностью не завершиться.  В 1-ом пункте, у программы есть ключ /exit для закрытия.

Я не знаю поведения программы, так как нет ее у меня. Что происходит, если выполнить из комстроки с этим ключем ее запуск? Когда она уже запущена, конечно.

Цитата:
Также выдаеться ошибка, если в папке Temp уже существует WebDown.dat

Это я упустил из вида. Надо чтобы переписывался поверх?
 
Попробуй так...

Всего записей: 3551 | Зарегистр. 20-11-2003 | Отправлено: 14:01 13-04-2009
Zakkazak



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

Цитата:
Что происходит, если выполнить из комстроки с этим ключем ее запуск? Когда она уже запущена, конечно.

программа завершаеться, сохраняя результаты работы. Пример из батника:
start /wait "" "%ProgramFiles%\Offline Explorer Enterprise\OE.exe" /exit

Цитата:
Надо чтобы переписывался поверх?

Ага
 
Выдает ошибку

Цитата:
Script:   f:\Setts\Application Data\Offline Explorer2\descrRush.vbs
Line:    5
Char:    1
Error:    Wrong number of arguments or invalid property assignment: 'RunApp'
Code:    800A01C2
Source:     Microsoft VBScript runtime error


Всего записей: 995 | Зарегистр. 12-01-2005 | Отправлено: 15:09 13-04-2009
Rush

Уже за тридцать...
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Или так...

Всего записей: 3551 | Зарегистр. 20-11-2003 | Отправлено: 15:10 13-04-2009 | Исправлено: Rush, 15:11 13-04-2009
Zakkazak



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Windows cannot find 'E:\Program Files\Offline Explorer Enterprise\OE.exe /exit'. Make sure you typed the name correctly, and then try again. To search for a file, click the Start button, and then click Search.
 
Script:    f:\Setts\Application Data\Offline Explorer2\descrRush.vbs
Line:    6
Char:    1
Error:    Wrong number of arguments or invalid property assignment: 'CheckClose'
Code:    800A01C2
Source:     Microsoft VBScript runtime error

Всего записей: 995 | Зарегистр. 12-01-2005 | Отправлено: 15:39 13-04-2009
Rush

Уже за тридцать...
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Zakkazak
Хреново, когда не на чем проверить...  
 
блин, промазал. Надо подумать...
 
Добавлено:
Пробуй  

Всего записей: 3551 | Зарегистр. 20-11-2003 | Отправлено: 16:04 13-04-2009 | Исправлено: Rush, 16:25 13-04-2009
Zakkazak



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

Цитата:
Хреново, когда не на чем проверить...

Извиняй за неудобства..
 
Добавлено:
Урра!!! Работает !!! мени сенкс
Твое славное имя будет увековеченно в соответствующем топике
Ещё раз извиняй за напряг..

Всего записей: 995 | Зарегистр. 12-01-2005 | Отправлено: 16:25 13-04-2009
Rush

Уже за тридцать...
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Zakkazak

Цитата:
Урра!!! Работает !!!


Цитата:
Ещё раз извиняй за напряг..

Слава Богу! Я аж вспотел...    
 
Добавлено:
Скрипт можно оптимизировать еще - убрать лишние строки
Подробнее...

Всего записей: 3551 | Зарегистр. 20-11-2003 | Отправлено: 16:38 13-04-2009 | Исправлено: Rush, 16:48 13-04-2009
   

Страницы: 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 » Компьютеры » Программы » Командная строка, батники, сценарии (bat, cmd)
Widok (03-03-2010 16:29): Лимит страниц. Продолжаем здесь.


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

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.Board
© Ru.Board 2000-2020

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru