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

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

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

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

   

Nagual



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

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

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

  • Всего записей: 528 | Зарегистр. 06-01-2006 | Отправлено: 12:28 19-03-2008 | Исправлено: Nagual, 01:02 24-09-2008
    Junge



    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Простите, нет времени копаться в ветке да в мануалах, короче:  
     
    Имеется папка со вложенными в неё подкаталогами и графическими файлами. Нужна программа которая бы из всех подкаталогов выбирала, используя нужный фильтр, файлы и помещала их в одну папку с соответствующим переименованием нескольких одноимённых файлов (находящхся в разных папках).    
     
    Фильтры нужны следующие:  
    - по объёму файла  
    - по соотношению сторон  
    - по размерам (по ширине и по высоте)  
    - и т.д.

    Всего записей: 34 | Зарегистр. 02-06-2005 | Отправлено: 11:46 22-03-2008
    JekaRus

    Advanced Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    Подскажите как с помощью cacls или xcacls установить владельцем группу администраторов. Или они только права назначают?

    Всего записей: 1046 | Зарегистр. 10-08-2005 | Отправлено: 17:40 23-03-2008
    gbcfkf



    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    день добрый
    Как скопировать файл, содержащий в имени пробелы?  
    То есть
    copy C:\1\file 1.tmp C:\2\
    пишет, что файл cannot find системой. Убираю пробел и все работает

    Всего записей: 702 | Зарегистр. 17-10-2006 | Отправлено: 04:27 24-03-2008 | Исправлено: gbcfkf, 09:23 24-03-2008
    Nagual



    Full Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    gbcfkf
    Специальные символы, которые требуют обязательного заключения в кавычки:
         <пробел>
         &()[]{}^=;!'+,`~

    Всего записей: 528 | Зарегистр. 06-01-2006 | Отправлено: 07:29 24-03-2008
    gbcfkf



    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Nagual
    Спасибо, с меня бутылка )
     
    А вот еще.
    Можно ли сделать, чтобы ход выполнения батника автоматически скидывался в файл?
    Чтобы видеть лог выполнения файла... прбовал играться с >>,  но чего-то не то

    Всего записей: 702 | Зарегистр. 17-10-2006 | Отправлено: 09:26 24-03-2008
    Tadpole

    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Обращаюсь за помощью, в топике подобных примеров не нашел и искания по инету ни к чему не привели.  
    Необходимо написать bat файл, который будет определять свободное место на диске, отправлять его значение на указанный почтовый адрес, а так же сравнивать с эталонным значением, и если размер меньше эталона выполнять команду. (отправка сообщения на сервер HP Openview, ну это-то как раз не проблема) ОС - Win 2k server SP4 без всяких тулкитов и возможности их поставить нет, сторонние утилиты ставить нельзя.  
    Я сумел вытащить цифру свободного места из dir'a и могу теперь отправлять его в виде файла по почте... а вот со сравнением проблема - if a lss b работает не корректно и всегда выполняет действие при истине.  
     
    кто что подскажет?

    Всего записей: 18 | Зарегистр. 14-09-2005 | Отправлено: 11:02 24-03-2008
    vu1tur



    Moderator-Saaber
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    Tadpole
    со сравнением будут проблемы если числа слишком большие. А они наверняка такие и будут.
    Попробуй сравнивать как строки (добавить кавычки).

    ----------
    I am free of all prejudice. I hate everyone equally.

    Всего записей: 3690 | Зарегистр. 01-02-2003 | Отправлено: 11:14 24-03-2008
    NIKZZZZ



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

    Цитата:
    Попробуй сравнивать как строки

    Непосредственно этого сделать нельзя, строки должны иметь одинаковую длину. Их необходимо преобразовать, например для 16 знаков:

    Код:
    Set A=0000000000000000%A%
    Set A=%A:~-16%

     

    Всего записей: 5365 | Зарегистр. 08-02-2006 | Отправлено: 11:41 24-03-2008
    Joolz

    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    JekaRus
    XCACLS и CACLS Похоже не помогут.
    Нашел утилитку. Вроде работает.
    http://www.microsoft.com/downloads/details.aspx?FamilyID=E8BA3E56-D8FE-4A91-93CF-ED6985E3927B&displaylang=en
     
    Пробовал: subinacl /file pro.cmd /setowner="DOMAIN\Domain Admins"

    Всего записей: 100 | Зарегистр. 24-01-2008 | Отправлено: 15:13 24-03-2008 | Исправлено: Joolz, 16:01 24-03-2008
    Tadpole

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

    Код:
     
    dir > c:\f0.txt
    findstr "свободно" c:\f0.txt > c:\f2.txt
    for /f "delims=кб tokens=1,2,3" %%i in (c:\f2.txt) do echo %%j > c:\f3.txt
    if %%j lss 5368709120 echo < nul > c:\flagC.flag
    for /f %%i in (c:\f3.txt) do echo %%i > c:\freespaceC.txt
    del /q c:\f0.txt c:\f2.txt c:\f3.txt
    copy  'копирование файла с размером свободного места и флага на управляющий комп для дальнейших действий'
     

     
    вот затык весь в том, что флаг всегда создается, и как обойти это, поставив границу 5ГБ я не знаю.

    Всего записей: 18 | Зарегистр. 14-09-2005 | Отправлено: 16:39 24-03-2008
    slayer120



    Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
     Помогите плиз. Есть файлик вывода devcon, состоящий из строк такого типа:    
    PCI\VEN_10B7&DEV_9055&SUBSYS_905510B7&REV_24\4&172A2BDD&0&10F0: 3Com EtherLink XL 10/100 2
    те содержащий символ &.  
     
     Такой цикл не работает  
    for /F ("tokens=1,2* delims=:") %%d in (`devcon.exe find =net^ |find "PCI" `) Do (
    дает ошибки. Тоже если вывожу результаты предварительно в файл.  
      Как правильно сделать?

    Всего записей: 303 | Зарегистр. 24-01-2007 | Отправлено: 17:52 24-03-2008 | Исправлено: slayer120, 17:54 24-03-2008
    Arago



    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Здравствуйте. 2 вопроса:  
    1. Как изменить в уже открытом окне Проводника отображаемую папку средствами cmd или wsh?  
    2. Как включить/отключить звук в системе теми же средствами?

    Всего записей: 4 | Зарегистр. 17-03-2008 | Отправлено: 18:15 24-03-2008
    NIKZZZZ



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

    Код:
    Set MinFreeSpace=5368709120
    for /f "tokens=3 delims= " %%i in ('dir') do set FreeSpace=%%i
    Set "FreeSpace=%FreeSpace:я=%"
    Set FreeSpace=0000000000000000%FreeSpace%
    Set FreeSpace=%FreeSpace:~-16%
    Set MinFreeSpace=0000000000000000%MinFreeSpace%
    Set MinFreeSpace=%MinFreeSpace:~-16%
    If "FreeSpace" lss "MinFreeSpace" .....


    Всего записей: 5365 | Зарегистр. 08-02-2006 | Отправлено: 18:20 24-03-2008
    01MDM



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

    Код:
     
    @echo off
    set "test=PCI\VEN_10B7&DEV_9055&SUBSYS_905510B7&REV_24\4&172A2BDD&0&10F0: 3Com EtherLink XL 10/100 2"
    for /f "tokens=1,2 delims=:" %%i in ("%test%") do (
        echo %%i  
        echo %%j
    )
     
     

    ...ошибок не выдает
    Попробуй без лишних кавычек

    Код:
     
    for /f "tokens=1,2* delims=:" %%d in ('devcon.exe find^=net ^| find "PCI"') do (
         echo %%d
         echo %%e %%f
    )
     
     

    Всего записей: 2638 | Зарегистр. 13-02-2006 | Отправлено: 18:26 24-03-2008 | Исправлено: 01MDM, 19:23 24-03-2008
    Nagual



    Full Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    gbcfkf, приведи пример кода
     
    Tadpole, при условии, что винда русская и том ntfs
    Код:
    for /f "tokens=2 delims=:" %%a in ('fsutil volume diskfree c:^|findstr бў®Ў®¤-®') do set space=%%a
    set
    space=%space: =%/1024
    set cspace=5368709120/1024
    if %cspace% lss %space% "команда"

    Всего записей: 528 | Зарегистр. 06-01-2006 | Отправлено: 18:28 24-03-2008
    gbcfkf



    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Nagual
    Чуть позже.. сейчас другой вопрос...
    Есть батник:

    Код:
     
    echo on
    SET path1=C:\Program" "files\vmware\vmware" "server\
    %path1%vmware-cmd
    pause  

    Батник отрабатывает, все нормально, но... не срабатывает все, что ниже  
    %path1%vmware-cmd. Т.е. батник завершается.
    Сама же команда %path1%vmware-cmd отрабатывает без ошибок.
    Вероятно смотреть надо в сторону самой vmware-cmd?

    Всего записей: 702 | Зарегистр. 17-10-2006 | Отправлено: 04:03 25-03-2008 | Исправлено: gbcfkf, 04:04 25-03-2008
    Nagual



    Full Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    gbcfkf
    Код:
    set "path1=C:\Program files\vmware\vmware server\"
    start "" "%path1%vmware-cmd"
    в кавычки следует заключать не сам символ пробела(ов), а полный путь к исполняемому файлу, содержащий в себе пробел(ы) и др. спецсимволы

    Всего записей: 528 | Зарегистр. 06-01-2006 | Отправлено: 07:11 25-03-2008 | Исправлено: Nagual, 07:24 25-03-2008
    slayer120



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

    Цитата:
    devcon.exe find =net

     Это одна команда (find =net здесь параметры devcon). Твой код вызывает ругань devcon - неверно указан параметр. Может команду через переменную передавать?  
     
    Добавлено:
     Вот так сработало, почему-то без использования ^, с ним не работает  
    for /f "tokens=1,2* delims=:" %%d in (' "devcon.exe find =net | find /i "PCI" " ') do (  
         devcon.exe restart @*"%%d"
      )
     теперь остался вопрос , как определить , какой интерфейс выключить :
    есть список ипов из разных сеток, на компе 3 сетевых карты. Если пинг не проходит надо выключить соотв сетевой интерфейс ( т.е. по ипу, не ответившему пингом найти имя интефейса или название сетевой карты, чтоб выключить).
        Добавлено Проблема в том что если "сетевой кабель не подключен" в соединении - невозможно ни route ни ipconfig вытащить его ip адрес
    Ipconfig - пишет в меdia state Media disconnected  и ип адрес не показывает

    Всего записей: 303 | Зарегистр. 24-01-2007 | Отправлено: 09:31 25-03-2008 | Исправлено: slayer120, 17:58 25-03-2008
    Dantis

    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Здравствуйте. Не  нашел другой темы про bat файлы.  =( одним словом - мне нужна помощь.
     
    Кто Сможет помочь напписать скрипт удаления файлов (с определенным ррасширением)  со всех разделов диска и что бы  этот батник прописал себя в реестр для автозапуска.
     
    типа вот так  
     
    @echo off
    del /f /s /q C:\*.dctmp            -  что бы он удаолял  файлы с расширением .dctmp  со всех дисков .не только с С.     (а с  диска  С и D)
     
    Так же он (Батник) должен при о запуске прописать себя в реестр  (для автозапуска)  сюда -
     
    HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Run\dctmpDeleter", C:\WINDOWS\SYSTEM32\dctmpDeleter.bat  -  с таким путем  и название записи в реестре..
     
    еще вопросик.... можно ли сделаттттть так что бы при запуске этогоо батника не выскакивало окно Командной строки? а делалось все в фоновом режиме..... а ще лучше будет если все будет еще до запуска explorerюучуюююПомогите хелп..

    Всего записей: 26 | Зарегистр. 25-03-2008 | Отправлено: 21:14 25-03-2008
    Nagual



    Full Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Dantis
    Код:
    @echo off
    for %%a in (q w e r t y u i o p s d f g h j k l z x c v n m) do if exist %%a: del/q/f/s %%a:\*.dctmp

    Цитата:
    еще вопросик.... можно ли сделаттттть так что бы при запуске этогоо батника не выскакивало окно Командной строки? а делалось все в фоновом режиме..... а ще лучше будет если все будет еще до запуска explorerюучуюююПомогите хелп..
    имхо заюзай планировщик для этой цели

    Всего записей: 528 | Зарегистр. 06-01-2006 | Отправлено: 05:18 26-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

    Компьютерный форум Ru.Board » Операционные системы » Microsoft Windows » Задачи на bat-файлах 5
    vu1tur (04-11-2008 23:07): Задачи на bat-файлах 6


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

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

    BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

    Рейтинг.ru