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

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

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

Widok (19-11-2007 12:08): лимит страниц. продолжаем здесь  Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 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 109 110 111 112 113 114 115 116 117 118

   

KLASS



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

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

Всего записей: 11062 | Зарегистр. 12-10-2001 | Отправлено: 04:28 24-09-2002 | Исправлено: Elroir, 19:35 11-09-2007
dasm



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Accessor
Вот это можно было найти по команде help for:

Цитата:

 Поясняющий пример:
 
  FOR /F "eol=; tokens=2,3* delims=, " %i in (myfile.txt) do @echo %i %j %k
 
    эта команда обрабатывает файл myfile.txt, пропускает все строки, которые
    начинаются с символа точки с запятой, и передает вторую и третью подстроки
    из каждой строки в тело цикла, причем подстроки разделяются запятыми и/или
    пробелами
. В теле цикла переменная %i используется для второй подстроки,
    %j - для третьей, а %k получает все оставшиеся подстроки после третьей.
    Имена файлов, содержащие пробелы, необходимо заключать в двойные кавычки.
    Для того чтобы использовать двойные кавычки, необходимо использовать
    параметр usebackq, иначе двойные кавычки будут восприняты как границы
    строки для обработки.
 
    Переменная %i явно описана в инструкции for, а переменные %j и %k
    описываются неявно с помощью ключа tokens=
. Ключ tokens= позволяет извлечь
    из одной строки файла до 26 подстрок, при этом, не допускается
    использование переменных больших чем буквы 'z' или 'Z'. Следует помнить,
    что имена переменных FOR являются глобальными, поэтому одновременно не
    может быть активно более 52 переменных.

Особо попрошу обратить внимание на выделенный текст.
 
Ignat

Цитата:
Программа может стоять и на 98, 2к, ХР и 2к3, эта ветка реестра у всех одинаковая?

Скорее всего, да. Для универсальности, прийдется добавить кучу строчек:
regedit /ea tmp10.reg HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Office\10.0\Common\InstallRoot
.....
regedit /ea tmp5.reg HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Office\5.0\Common\InstallRoot
а потом использовать if exist tmpx ... где x=5...11. Да, еще конечно удалить все reg-файлы.  
Скорее всего в системе установлен только один офис, поэтому файл будет один. Как по-другому узнать версию офиса, я по не знаю.

Всего записей: 287 | Зарегистр. 05-12-2003 | Отправлено: 20:37 29-12-2005 | Исправлено: dasm, 20:40 29-12-2005
khk

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Вопрос к знатокам!
Реализую тут насколько умею процедуру обмена с ФТП, споткнулся на сущей ерунде, не могу никак обойти такую проблему:
условно, имеется  конструкция вида
 
:begin
if  exist c:\outbox\*005_*.* goto send
goto begin
:send
 
Под которой подразумевается, что если в c:\output\ что-то есть ,то переходим на метку send. Но только это не работает . if не понимает "*.*" , ей конкретные имена файлов подавай. А в том то и дело что для файлов на отсылку\прием требуется применять маски. Как обойти эти грабли?  Заранее спасибо!
А вообще я пытаюсь написать батник с ГАРАНТИРОВАННОЙ доставкой в обе стороны, и чтобы это работало АВТОМАТИЧЕСКИ (принимало и отправляло по шедулеру или по наличию того что отправлять) 365 дней в году без присутствия рядом админов и вообще каких-либо пользователей. Готовых решений увы не нашел

Всего записей: 4 | Зарегистр. 09-01-2006 | Отправлено: 03:23 09-01-2006
KapralBel



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

Всего записей: 11354 | Зарегистр. 16-02-2005 | Отправлено: 11:25 09-01-2006
khk

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
KapralBel
Ceрверная часть - win2003  server, на клиентских машинах ХР Pro или win2000pro

Всего записей: 4 | Зарегистр. 09-01-2006 | Отправлено: 12:21 09-01-2006
KapralBel



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

Цитата:
:begin  
if  exist c:\outbox\*005_*.* goto send  
goto begin  
:send  

Прекрасно все работает и на ХП и на 2003
Приведи сообщение об ошибке

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

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
KapralBel
 
Хм...Это самое, сообщений об ошибках нету. Просто независимо от того лежит ли в проверяемой папке c:\outbox файл с любой маской или  нет, if считает что лежит, и данном случае передает управлаение на :send .Но если вместо маски написать к примеру "1.txt" ,то тогда да, все работает как запланировано.

Всего записей: 4 | Зарегистр. 09-01-2006 | Отправлено: 12:52 09-01-2006
KapralBel



Platinum Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
khk
Для данного батника
нет в папке оутбокс никакого файла - идет постоянное выполнение, ложу файл aa005_a.txt - прекращается
Какой файл ты ложишь для проверки по данной маске?

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

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

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

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Всем привет!  
 
Я пытаюсь реализовать с помощью ВАТ файлов следующую задачу,  
запуск приложения под правами другова польтеля, и при закрытии этого приложения автоматическое выключение компьютера.  
У меня не получается реализовать это в виде одного файла, и второе проблема в том что постоянно  появляется окно выполнения ВАТ файла, что с ним можно сделать что бы оно не было  на переднем плане или всё выполнялось в скрытом виде или хотябы в свернутом что бы пользователь не мог его случайно закрыть.  
 
первый фаил у меня запускает второй фаил с правами админа  
 
\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\  
 
runas /user:admins /savecred ./a1.bat  
 
\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\  
Второй фаил запускает приложение с параметрами и после закрытия приложения выполняет третий ВАТ фаил с командой на выключение машины.  
\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\  
 
@ECHO OFF  
"D:\Program Files\1Cv77\BIN\1c77.exe" ENTERPRISE /D " .\DemoDB\" /N "user"  
./a2.bat  
\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\  
В третем файле всё просто, выполняет команду на выключение машины, спомощью внешнего файла с нестандартными ключами.  
\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\  
.\shutdown.exe" /-1  
\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\  
 
В таком виде всё отлично у меня работает, за исключением двух неудобств которые я написал вначале.  
Если возможно это всё сделать удобнее и комфортнее, помогите написать хороший ВАТ фаил. Заранее благадарю! С  Новым 2006 Годом!!!  
 
 
Добавлено:
Я получил ответ но файл до конца не получился....
 
Цитата:У меня не получается реализовать это в виде одного файла  
 
Текущее имя файла содержится в параметре %0  
Будет что-то типа  
runas /user:admins /savecred %0  
А что бы не было рекурсивного зацикливания предусмотреть дополнительный параметр или переменную.  
 
Для управления окнами можно использовать утилиту CMDOW. Например, команда cmdow @ /hid в командном файле скроет его окно. Можно запускать файлы через ярлык через cmdow /run /hid команда  
 
А вообще, с подобными вопросами лучше наверное сюда http://forum.ru-board.com/topic.cgi?forum=5&bm=1&topic=4582&start=360#lt
 
Проблема следующая......................
 
Спасибо Smitis за консультацию!!!  
Но у меня не получается выти из зацикливания после %0, притом задачи выполняются непоследовательно а зацикливаются все задачи.....у меня открылось за пару секунд по 50 окон каждой задачи, мне нужна помощь, как это грамотно реализовать??????????  
Ещё раз поздравляю со всеми праздниками!  
Пожалуйста помогите! Очень надо!
Заранее очень благодарен!  
 

Всего записей: 4 | Зарегистр. 25-12-2005 | Отправлено: 21:33 09-01-2006
Da_Neil



Silver Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Необходимо как-то оформить настройки для нескольких батников, как это лучше организовать? Например, можно ограничиться банальным вызывом батника с настройками и SETами выставить нужные параметры или считывать их из текстового файла с определённой структурой. Никто готовых решений или примеров реализации не встречал?

Всего записей: 3420 | Зарегистр. 05-03-2002 | Отправлено: 02:08 24-01-2006
KapralBel



Platinum Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Da_Neil
Думаю все зависит от конкретной задачи.
Если не секрет - приведи нужную задачу. Посмотрим как можно сделать эффективнее

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



Silver Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
KapralBel
Релизерские скрипты (см. eac-enc.cmd и eac-post.cmd) дорабатываю.

Всего записей: 3420 | Зарегистр. 05-03-2002 | Отправлено: 15:46 24-01-2006
KapralBel



Platinum Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Da_Neil
И что надо сделать?
Скрипты нормальные

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



Silver Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
KapralBel
Надо пользовательские настройки вынести, чтобы не мучались при обновлении версии

Всего записей: 3420 | Зарегистр. 05-03-2002 | Отправлено: 16:04 24-01-2006
KapralBel



Platinum Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Da_Neil
В смысле "Пользовательские настройки"?
Что именно?

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



Silver Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
KapralBel
Пути к программам, параметры тэгов, схемы наименования файлов и папок (в перспективе), параметры кодировщиков и т.д.

Всего записей: 3420 | Зарегистр. 05-03-2002 | Отправлено: 18:55 24-01-2006
KapralBel



Platinum Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Da_Neil
Вариант 1
Прописать в переменные среды системы нужные параметры и использовать в кмд-никах.
 
Вариант 2
Прописать соответсвующие SET-ы в логон-скрипт для каждого компа  
 
Вариант 3
Первой строкой сделать вызов Call \\Server\Share\Setup.cmd - и там прописывать в зависимости от машины нужные переменные среды
 
Вариант 4
В самом скрипте п зависимости от компа и пользователя объявлять переменные среды
 
Далее обращаться не к явно прописаным настройкам, а к переменным среды

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

Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Есть ли под Windows консольная программа которая показывает какой процес сколько загружает ЦП, как taskmgr тока консольный. tasklist.exe не показывает загрузку.

Всего записей: 243 | Зарегистр. 06-08-2004 | Отправлено: 23:41 25-01-2006
Accessor



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Isorkin
попробуй PSlist c http://www.sysinternals.com, я не уверен, но попробуй или же поищи самомтоятельно там же.

Всего записей: 2863 | Зарегистр. 31-10-2003 | Отправлено: 10:28 26-01-2006
mr1



BANNED
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Помогите, плиз.
Есть куча архивов в одной папке и подпапках. Необходимо создать батник или скрипт(vbs, js, Perl), который бы выполнял, следующие действия:
1. Существующие архивы в папке и подпапках формата zip, arj конвертировал в формат rar. Если архив формата rar, то надо осуществить проверку степени сжатия и если нужно архивировать с максимальной  степенью сжатия. При этом необходимо сохранять оригинальные время создания архивов, дату файлов и комментарии в архивах.
2. Правил в каждой папке файл descript.ion, меняя расширения файлов с zip или arj на rar.
При этом если строка в descript.ion имеет кодировку dos866, её нужно перевести в win1251.

Всего записей: 38 | Зарегистр. 03-01-2006 | Отправлено: 07:15 28-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 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118

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


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

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

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru