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

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

Модерирует : KLASS, IFkO

vu1tur (25-01-2010 12:41): лимит страниц, продолжение: http://forum.ru-board.com/topic.cgi?forum=62&topic=19668  Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 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

   

vu1tur



Moderator-Saaber
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Задачи на bat-файлах 7
(часть 1, часть 2, часть 3, часть 4, часть 5, часть 6)
Вопросы, задачи и их решения по работе с командными файлами, а также сопутствующие ссылки.

 
Важно: копируя батник через буфер обмена из форума не забывайте удалять пробелы в конце каждой строки, т.к. в некоторых случаях из-за этого программа будет работать неправильно!!!
 
Также для удаления концевых пробелов пользуйтесь скриптом от Nagual, или VBS-Скрипт-Модулем от ViSiToR.
 
Для перекодирования кирилицы 866<<>>1251 пользуйтесь онлайн сервисом Перекодировщик кириллицы

 
Дополняем шапку: добавляем готовые решения, полезные ссылки.
 
Примечание: Большие куски кода заключайте в тэг [more]  
 
Смежные темы:
В помощь системному администратору » Автоматизация администрирования
Программы » Командная строка, батники\сценарии
 
Полезные ссылки
 
Полезные утилиты
 
Готовые решения и частые вопросы:
  • Встроенный справочник по командам
  • Создание помощи по всем командам консоли 2000 и XP
  • Делаем паузу в командном файле стандартными средствами Windows
  • Альтернативные решения »
  • Работа с текстом, датой, и файлами »
  • Администрирование, автоматизация и сеть »
  • Работа с переменными и параметрами ком. строки »
     
    Описания работы команд и символов участниками темы:
    · setlocal enabledelayedexpansion и переменные окружения
    · символы & и && в командной строке
    · Переменная %0

  • Всего записей: 3690 | Зарегистр. 01-02-2003 | Отправлено: 11:37 26-05-2009 | Исправлено: TechnicsKuzya, 13:53 27-12-2009
    anachrom

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

    Цитата:
    А поставить домен и назначить пользователям права на каталоги - совсем не судьба, хочется поизвращаться?

    Во первых разворачивать домен ради максимум 10 машин находяшихся в 2 метрах друг от друга в одной комнате, неотгороженной перегоротками, по моемому это извращение. Во вторых, домен для Windows XP Home? В третих как правилами указать что каталог использовать можно, а вот копировать от туда нельзя, эт как?
    NIKZZZZ

    Цитата:
    А как именно запрашивается пароль? Может просто послать его из батника?

    Вот и хочется его из батника посылать. Т.е. сначало посылается имя пароль для опрделенного места, затом из этой директории запускается база.

    Всего записей: 179 | Зарегистр. 18-11-2008 | Отправлено: 20:56 30-08-2009
    NIKZZZZ



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

    Цитата:
    Вот и хочется его из батника посылать.

    Так я и спрашиваю, что это за место? Куда вводится пароль?

    Всего записей: 5365 | Зарегистр. 08-02-2006 | Отправлено: 22:03 30-08-2009
    anachrom

    Junior Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    Суть в следующем. На клиентской машине установленна "1с Предприятие", база находится на сервере. Когда пытаешься поключиться вывовид ошибку запрета. Если в адресной строке набрать адрес места где храниться база (\\192.168.1.1\base) выподает запрос на логин и пароль (как при стандартном подключении к сетевому диску). Так вот и надо, что бы логин и пароль к папке с базой (на сервере) указывался через батник.
    Вот пример  

    Код:
     
    net use s: "\\192.168.0.1\1c" /user:login password  
    "c:\program files\1cv81\bin\1cv8.exe" enterprise /f s:  
    net use s: /delete
     

    Здесь сначала подключается сетевой диск при подключении которого указывается логин login и пароль password. Так вот нодо, что бы этот логин и пароль указывались к данному пути без подключения сетевого диска, так, что в дальнейшем можно было этот путь использовать.
    Ну вот, вроде задачу описал.

    Всего записей: 179 | Зарегистр. 18-11-2008 | Отправлено: 23:24 30-08-2009
    Kirillhome



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

    Код:
     
    for /L %%i in (1,1,%1) do (
    echo %%i
    )
     

     
    Добавлено:
    anachrom
    Всё равно не понятно, что нужно...
     
    Можно, к примеру, так - проверить, если диск не подсоединён, то - подсоединяем, если подсоединён - то сразу запускаем 1с
     

    Код:
     
    if exist S:\nul goto :_prod
    net use s: "\\192.168.0.1\1c" /user:login password  
     
    :_prod
    "c:\program files\1cv81\bin\1cv8.exe" enterprise /f s:  
    net use s: /delete  
     


    Всего записей: 426 | Зарегистр. 23-11-2004 | Отправлено: 01:06 31-08-2009
    RcT

    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Kirillhome
    Спасибо за ответ, конечно, но мне нужно обработать файл построчно, а для этого нужно использовать for /F

    Всего записей: 4 | Зарегистр. 28-08-2009 | Отправлено: 01:32 31-08-2009
    wolf0425



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

    Код:
    setlocal enabledelayedexpansion
     
    set /a i=0
    for /F in (%1) do (
    set /a i+=1
    echo !i!
    )  
    или так  

    Код:
    set /a i=0
    for /F in (%1) do (call :_print)
    goto :eof
     
    :_print
    set /a i+=1
    echo %i%
    goto :eof  

    Всего записей: 2929 | Зарегистр. 25-04-2007 | Отправлено: 02:13 31-08-2009 | Исправлено: wolf0425, 02:22 31-08-2009
    NIKZZZZ



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

    Цитата:
    выподает запрос на логин и пароль

    Так можно на этот запрос и ответить, послав нужные символы. Если не ошибаюсь, nircmd это умеет.

    Всего записей: 5365 | Зарегистр. 08-02-2006 | Отправлено: 02:27 31-08-2009
    wolf0425



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

    Цитата:
    В третих как правилами указать что каталог использовать можно, а вот копировать от туда нельзя, эт как?  
    А так у тебя и не получится - если 1с работает под текущим пользователем, то пользователю никто не может помешать во время работы 1С зайти эксплорером в тот же каталог, предварительно выяснив с каким ключом запущена 1С.
     
    чего еще можно сделать... перейти на клиент-серверный вариант 1С (благо он у 8.1 есть): там никакие каталоги не шарятся, прямой доступ к файлам базы есть только у сервера. но это стоит хороших денег.  
     

    Всего записей: 2929 | Зарегистр. 25-04-2007 | Отправлено: 02:44 31-08-2009
    anachrom

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

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

    Вот от этого я и хочу избавиться. Если все ключи указать в батнике, в самом начале которого поставить @echo off, и пережать батник в exe (программ для этого написано достаточно), то пользователь и не узнает откуда что берется. Так вот здесь мы и подошли к самой задаче. Параетры запуска 1с:
    "c:\program files\1cv81\bin\1cv8.exe" enterprise /f "\\192.168.0.1\1c"
    где:
    "c:\program files\1cv81\bin\1cv8.exe" путь до установленной программы
    enterprise - запуск 1с в режиме предприятия
    /f "\\192.168.0.1\1c" - путь до информационной базы
    Но это не суть. Суть в том, что при обычном создании сетевого диска или попытке удаленно забрести на другой компутер полазить по шарам у нас запрашивают логин и пароль. Вот и в моем случае при подключении 1с к сетевому ресурсу, сетевой ресурс запрашивает логин и пароль. Вот и сама задача: как передать этому сетевому ресурсу из командной строки логин и пароль.
    Нашел ключ к команде net use, /savecred который вроде и запоминает пароли, и сделать можно батник который при входе будет подключать и отключать сетевой диск с запоминанием пароля. А в дальнейшем опять же перегнать батник в exe, что бы пользователь ничего неувидел. Но вот проблема, параметр /savecred может и работает, только тайным для меня образом. вот мой код :

    Код:
     
    @echo off
    net use s: "\\192.168.0.1\1c" /user:login password /savecred
    net use s: /delete
     

    так вот после исполнения строчки подключения выдает: "Используется команда с конфликтующими ключами".
    в чем ошибка моего использования ключа /savecred?
     
    Добавлено:
    Слегка разобрался с net use /savecred. Если писать так:

    Код:
     
    net use "\\192.168.0.1\1c" /savecred
     

    то после одноразового запроса логина и пароля все хорошо (в смысле дальше на сервер до перезагрузки пускает без лишних вопросов).
    А как указать, что бы и этого одноразового запроса логина и пароля невыскакивало?

    Всего записей: 179 | Зарегистр. 18-11-2008 | Отправлено: 09:11 31-08-2009
    01MDM



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

    Цитата:
    что-то наподобие прогресс-бара и процент выполнения.  

     
    Такой пример. Прогресс-бар. Здесь главное, чтобы при обработке файла ничего не выводилось в консоль.

    Код:
     
    @echo off
    setlocal
     
    for /f %%i in (1.txt) do set /a cnt+=1
     
     
    :: Шаг в прогресс-баре, это ~1/10 часть обработанных строк в файле. Спорно, просто пример.  
    set /a step=cnt/10
    set cnt=0
     
    0>nul set /p=wait [
    for /f "tokens=*" %%i in (1.txt) do (
        call:progress
        1>nul ping -n 1 localhost
    )
    0>nul set /p=] done
    echo.
    goto:eof
     
    :progress
    set /a cnt+=1
    if %cnt%==%step% (
        set cnt=0
        0>nul set /p=#
    )  
     

     
    Обрабатывается 1.txt. В моем случае обработку заменяет ping.

    Всего записей: 2638 | Зарегистр. 13-02-2006 | Отправлено: 09:42 31-08-2009 | Исправлено: 01MDM, 09:50 31-08-2009
    Alvick82



    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Подскажите пож-ста можно ли как-то посчитать количество не пустых строк на первом листе в большом кол-ве xls-файлов и сумму вывести в текстовый файлик?
    Спасибо.

    Всего записей: 19 | Зарегистр. 23-01-2007 | Отправлено: 10:00 31-08-2009 | Исправлено: Alvick82, 10:02 31-08-2009
    RcT

    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    wolf0425
    01MDM
    Спасибо огромное, очень помогли!

    Всего записей: 4 | Зарегистр. 28-08-2009 | Отправлено: 11:07 31-08-2009
    Dem_anywhere



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

    Цитата:
    Так вот нодо, что бы этот логин и пароль указывались к данному пути без подключения сетевого диска

    Так просто имя диска в команде не указываешь
    net use "\\192.168.0.1\1c" /user:login password  

    Всего записей: 230 | Зарегистр. 28-02-2006 | Отправлено: 12:01 31-08-2009
    anachrom

    Junior Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    Dem_anywhere
    Спасибо, как всегда все гениально и просто. Теперь не украдут.
     
    Добавлено:
    Интересно вот стало, а обратное действие можно сделать. В смысле забыть пароль и логин неперезагружая компу?

    Всего записей: 179 | Зарегистр. 18-11-2008 | Отправлено: 12:26 31-08-2009
    Ta78Rus



    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Доброго всем времени суток!
    Никак не могу реализовать средствами DOS или UNIX-DOS следующую задачу:
    -----
    Имеется текстовый файл, который надо проверить на наличие определенной строки. Если строка есть - продолжаем выполнение батника далее.
    Если строки нет - дописать в искомый файл другой текстовый файл.
    ----
    Ранее с таким не сталкивался, - подскажите?

    Всего записей: 30 | Зарегистр. 06-02-2005 | Отправлено: 12:59 31-08-2009
    mosthost

    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    через unix-dos (unxtools):
    cat z|grep "string" && goto :ok || goto :notok
    goto :eof
    :ok
    echo "OK"
    :notok
    cat x >>z
     
    можно через errorlevel

    Всего записей: 34 | Зарегистр. 12-08-2009 | Отправлено: 13:21 31-08-2009 | Исправлено: mosthost, 13:22 31-08-2009
    Ta78Rus



    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    mosthost
    Спс попробую. А вариант через еррорлевел реально озвучить?

    Всего записей: 30 | Зарегистр. 06-02-2005 | Отправлено: 13:22 31-08-2009 | Исправлено: Ta78Rus, 13:23 31-08-2009
    wolf0425



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

    Цитата:
    Если все ключи указать в батнике, в самом начале которого поставить @echo off, и пережать батник в exe (программ для этого написано достаточно), то пользователь и не узнает откуда что берется.

    Цитата:
    Спасибо, как всегда все гениально и просто. Теперь не украдут.  
    ага, теперь перед тем как украсть придется бедному вору найти и запустить pv.exe или какой-нибудь другой немикрософтовский тасклист, показывающий аргументы - типа из 5 строк на vbs...
    ужас какая защита. Это если в 1С совсем нельзя выяснить с какого пути база загружена...

    Всего записей: 2929 | Зарегистр. 25-04-2007 | Отправлено: 00:57 01-09-2009 | Исправлено: wolf0425, 02:19 01-09-2009
    Taciturn

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

    Код:
    type file1.txt|find "something"
    if not %errorlevel%==0 type file2.txt>>file1.txt

    Всего записей: 2014 | Зарегистр. 26-07-2003 | Отправлено: 09:56 01-09-2009
    Ta78Rus



    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    mosthost
    Taciturn
    Премного благодарен, оба варианта нашли применение.

    Всего записей: 30 | Зарегистр. 06-02-2005 | Отправлено: 10:51 01-09-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 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117

    Компьютерный форум Ru.Board » Операционные системы » Microsoft Windows » Задачи на bat-файлах 7
    vu1tur (25-01-2010 12:41): лимит страниц, продолжение: http://forum.ru-board.com/topic.cgi?forum=62&topic=19668


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

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

    BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

    Рейтинг.ru