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

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

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

vu1tur (29-07-2011 12:47): Задачи на bat-файлах 11
 Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 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

   

vu1tur



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

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

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

  • Всего записей: 3690 | Зарегистр. 01-02-2003 | Отправлено: 11:53 09-01-2011 | Исправлено: mazafakermazafaka, 11:22 04-06-2011
    42243

    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Нужно что бы программа в локальной сети запускалась в единственном энкземпляре.  
    Нашел способ с помощью утилиты PsList, но несколько дней экспериментов с политиками и правами доступа не дали рензультата, зато есть доступ в общую папку. Из чего родилась идея:
    Батник должен запускать данную программу, при запуске создавая в своей общей папке например 111.txt  
    После выхода из программы 111.txt должен удаляться (Не знаю воозможно ли это).
    А перед запуском проверять, нет ли такокого файлика в чужой общей папке по адресу \\User\111.txt Соответственно если файл есть, то программа не должна запускаться.
    Буду признателен за помощь. В батниках я чайник...

    Всего записей: 28 | Зарегистр. 17-08-2008 | Отправлено: 18:23 22-02-2011
    OOD

    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Подскажите как с помощью Batника изменить разрешение экрана?
     
    Добавлено:
    для windows 7
    пробовал

    Код:
     
    : batch file  
    multires.exe /800,600,32  
    start /w iexplore.exe  
    multires.exe /restore
     

    не выходит
     
    Добавлено:
    сама утилита
    http://www.entechtaiwan.com/util/multires.shtm

    Всего записей: 3379 | Зарегистр. 20-05-2006 | Отправлено: 18:28 22-02-2011
    Free_Soft



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

    Код:
    @echo off
    if exist \\User\111.txt  exit
    echo.>111.txt
    start /wait "" "program.exe"
    del /q 111.txt


    Всего записей: 1536 | Зарегистр. 19-04-2010 | Отправлено: 18:31 22-02-2011
    king_stiven

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

    Цитата:
    Подскажите как с помощью Batника изменить разрешение экрана?  

    nircmd в шапке, насчёт для windows 7 не уверен

    Всего записей: 2229 | Зарегистр. 17-07-2006 | Отправлено: 18:35 22-02-2011
    OOD

    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    king_stiven
    тоже самое
    nircmd.exe cmdshortcut "~$folder.desktop$" "800x600x24" setdisplay 800 600 24  
    не проходит  
     
    может кто то сталкивался с 7й? , очень надо

    Всего записей: 3379 | Зарегистр. 20-05-2006 | Отправлено: 19:00 22-02-2011
    wolf0425



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    42243
    Цитата:
    Нужно что бы программа в локальной сети запускалась в единственном энкземпляре.  
    наверно как-то так:

    Код:
    @echo off
    set "_program=program.exe"
    set "_fileflag=\\server\shareRW\program.flag"
    set "_tmp=%COMPUTERNAME%%random%.flag"
     
    1>nul 2>nul dir "%_fileflag" || (echo Error: Flag File not found! & exit)
     
    move /y "%_fileflag" "%_tmp%"  
    if errorlevel 1 echo Error: Flag File is locked! & exit  
     
    set /p _comp=<"%_tmp%"  
    1>nul ping %_comp% || goto :startnew
    tasklist /s %_comp% | findstr /i /b %program% 1>nul || goto :startnew
    move /y  "%_tmp%" "%_fileflag"
    echo %program%  is now working at %_comp%
    exit
     
    :startnew
    1>"%_fileflag" echo %COMPUTERNAME%
    del "%_tmp%"
    start "" "w:\dir345\%program%"
    rem w:\dir345\ - путь к программе
    exit
     
    не проверял
    \\server\shareRW\ - папка сервера, открытая на запись.
    program.flag - файлик для хранения информации о последнем запуске.
     
    в отличие от тривиального варианта Free_Soft - у программы нет непонятного юзерам ждущего окна батника и не требуется ручного вмешательства админа в случае досрочного выхода из программы кнопкой PilotPowerOff.

    Всего записей: 2928 | Зарегистр. 25-04-2007 | Отправлено: 19:07 22-02-2011 | Исправлено: wolf0425, 19:19 22-02-2011
    OOD

    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Подскажите смена разрешение заработала:
     
    multires.exe /1:1680,1050,32,60
    exit
     
    но нужно сделать чтобы перед запуском multires.exe была пауза какая то...

    Всего записей: 3379 | Зарегистр. 20-05-2006 | Отправлено: 19:22 22-02-2011
    king_stiven

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

    Всего записей: 2229 | Зарегистр. 17-07-2006 | Отправлено: 19:50 22-02-2011
    42243

    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    wolf0425
    Спасибо за работу. Но программа не запускается и program.flag не создается

    Код:
    @echo off  
    set "_program=FSViewer.exe"  
    set "_fileflag=\\vlad\SharedDocs\program.flag"  
    set "_tmp=%COMPUTERNAME%%random%.flag"  
     
    1>nul 2>nul dir "%_fileflag" || (echo Error: Flag File not found! & exit)  
     
    move /y "%_fileflag" "%_tmp%"  
    if errorlevel 1 echo Error: Flag File is locked! & exit  
     
    set /p _comp=<"%_tmp%"  
    1>nul ping %_comp% || goto :startnew  
    tasklist /s %_comp% | findstr /i /b %program% 1>nul || goto :startnew  
    move /y  "%_tmp%" "%_fileflag"  
    echo %program%  is now working at %_comp%  
    exit  
     
    :startnew  
    1>"%_fileflag" echo %COMPUTERNAME%  
    del "%_tmp%"  
    start "" "C:\Program Files\FastStone Image Viewer\%program%"  
    exit

     
    FSViewer.exe - это для проверки
    \\vlad\SharedDocs\ - Общая папка (открытая на запись) на моем компьютере на которую есть доступ с другого. Сервера нет. Это домашняя сеть на 2 компьютера.
    Любой из компьютеров может быть выключен, потому надо чтоб файл записывался на локальный компьютер, и проверялся этим батником с другого, и наоборот.

    Всего записей: 28 | Зарегистр. 17-08-2008 | Отправлено: 23:54 22-02-2011 | Исправлено: 42243, 00:05 23-02-2011
    wolf0425



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

    Цитата:
     Но программа не запускается и program.flag не создается  
    ну да, не создается - его один раз надо создать вручную, забыл написать.
     

    Цитата:
    Сервера нет. Это домашняя сеть на 2 компьютера.  
    тогда проще написать 2 раздельных батника для двух компов.  
    проверку от повторного запуска на одном компе-  писать надо, или FSViewer.exe сам повторно не запустится (на одном компе)?
     

    Всего записей: 2928 | Зарегистр. 25-04-2007 | Отправлено: 01:00 23-02-2011
    42243

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

    Цитата:
    проверку от повторного запуска на одном компе-  писать надо, или FSViewer.exe сам повторно не запустится (на одном компе)?

    Программа будет запускаться на обоих компьютерах, главное чтобы не одновременно (1 энкземпляр на 2 компа в сети)
    Я думал что батник будет одинаков для обоих кроме путей к общим папкам.
    На своем компе проверка на повторный запуск в общем не обязательна, и так видно. Главное проверить не запущена ли программа на удаленном компьютере, и если запущена, то чтобы запуск ее на своем был не возможен.
     
    Добавлено:
    Проблема решена, подсказали на другом форуме. Может кому пригодится, цитирую:
    $Userlist - список пользователей, по 1 на строку. Например, так:

    Код:
    \\192.168.1.217
    \\MORFEY
    \\BIBLIOTEKA
    \\MICROSOF-D58208

    $Sharename - Название общей шары на всех компах в сети
    $LocalShare - Путь к общей шаре на этом компе
    $Program - Нужная программа
    Если компьютер не в сети, то опрашивать его может до 20 секунд, чтобы не казалось, что скрипт завис, я добавил индикацию текущего адреса

    Код:
    @Echo Off
    Set $Userlist=userlist.txt
    Set $Sharename=Temp
    Set $LocalShare=D:\Temp
    Set $Program=C:\Windows\notepad.exe
     
    Set /A $isRunning=0
    For /F "tokens=*" %%l In (%$Userlist%) Do (
    Echo Checking... %%l\%$Sharename%\
    If Exist %%l\%$Sharename%\isRunning.flag Set /A $isRunning=$isRunning+1
    )
    If Not %$isRunning%==0 (Exit) Else (Echo.>"%$LocalShare%\isRunning.flag")
    Echo Do not close this window
    Call "%$Program%"
    Del "%$LocalShare%\isRunning.flag"


    Всего записей: 28 | Зарегистр. 17-08-2008 | Отправлено: 17:51 23-02-2011
    butanaev



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

    Всего записей: 25 | Зарегистр. 27-09-2010 | Отправлено: 09:44 24-02-2011
    res2001



    Silver Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    butanaev
    Боюсь, что это не возможно. Сам бился с этим.
    С точки зрения безопасности это и не нужно .
    Если ты это реализуешь, то  
    1.Любой может отправить инфу в сбербанк с этого раб.места
    2.Любой сможет узнать пароль.

    Всего записей: 2580 | Зарегистр. 11-04-2003 | Отправлено: 10:02 24-02-2011
    butanaev



    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    res2001
    с точки зрения безопасности - батник будет храниться на флешке с ключами и паролями, поэтому он не привязан к конкретному раб. месту. Может все же есть какое то решение задачи?

    Всего записей: 25 | Зарегистр. 27-09-2010 | Отправлено: 10:09 24-02-2011
    king_stiven

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

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

    Задать этому батнику определённый заголовок,  скрыто запустить второй батник, с помощью nircmd ввести цифры в окно батника.,

    Всего записей: 2229 | Зарегистр. 17-07-2006 | Отправлено: 10:37 24-02-2011
    butanaev78

    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    king_stiven
    вот это уже интересно, можно подробнее как
    Цитата:
    Задать этому батнику определённый заголовок
    и как воспользоваться командой nircmd?

    Всего записей: 9 | Зарегистр. 27-09-2010 | Отправлено: 10:49 24-02-2011
    smirnvlad

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

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

    а стандартное перенаправление потоков не работает?

    Код:
    echo my_password | sbersign /s 123.doc

    Всего записей: 417 | Зарегистр. 31-03-2009 | Отправлено: 10:52 24-02-2011
    butanaev78

    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    smirnvlad
    пробовал, не прокатывает. Игнорируется.

    Всего записей: 9 | Зарегистр. 27-09-2010 | Отправлено: 10:56 24-02-2011
    wolf0425



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

    Цитата:
    вот это уже интересно, можно подробнее как
    Задать этому батнику определённый заголовок  
    заголовок консольного окна устанавливливается
    1. при запуске его командой start
    2. выполнением в нем команды title  
     
     

    Цитата:
    и как воспользоваться командой nircmd?
    прочитать справку на тему nircmdc.exe sendkeypress - религия не позволяет или что?
     
     
    в общем-то с окном можно не заморачиваться, просто запускать nircmdc параллельно в текущем, пробуй:

    Код:
    @echo off
    start "" /b nircmdc.exe cmdwait 100 sendkeypress p a s s w o r d enter
    sbersign /s 123.doc

    Всего записей: 2928 | Зарегистр. 25-04-2007 | Отправлено: 11:49 24-02-2011 | Исправлено: wolf0425, 12:01 24-02-2011
    butanaev78

    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Еще одна загвоздка - пароль состоит из строчных и прописных латинских букв и цифр, но  nircmdc.exe sendkeypress передает все буквы преобразуя в строчные. Похоже задача нерешимая...

    Всего записей: 9 | Зарегистр. 27-09-2010 | Отправлено: 12:01 24-02-2011
       

    Страницы: 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 » Операционные системы » Microsoft Windows » Задачи на bat-файлах 10
    vu1tur (29-07-2011 12:47): Задачи на bat-файлах 11


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

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

    BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

    Рейтинг.ru