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

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

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

KLASS (06-03-2018 00:44): Объединение тем по сценариям: Сценарии Windows
 Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 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

   

hErAx

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

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

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

  • Отправлено: 01:53 25-10-2015 | Исправлено: Paromshick, 21:51 18-12-2017
    VidelSamogO



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

    Цитата:
    Ну или тот код в неизменном виде засунуть в процедуру

    Интересно. Я так вроде пробовал. Но сейчас на всякий случай проверю. Спасибо за помощь.
     
    Нет. Так почему то не хочет обрабатывать.
     

    Код:
    for /r %1 %%i in (*.*) do (
    echo %%~pi
    )
    pause

     
    При натравливании рекурсивного батника на путь, то есть на каталог, в конце  %%~pi появляется слэш. Каким образом от него избавиться? Раньше этот вопрос неоднократно поднимался, я помню. Но сейчас это нужно в цикле for.
     
    Всё. Благодарен топику за интересные материалы. Задача решена.  

    Батник, который запрещает изменять и переименовывать исполняемые файлы в подкаталогах пути, указанного в параметрах .

     

    Код:
    for /r %1 /d %%i in (*) do (
    echo y|cacls.exe %%i /C /G Администратор:C Все:C System:C
    )
     
    for /r %1 %%i in (*.exe) do (
    Attrib +R %%i
    echo y|cacls.exe %%i /C /G Администратор:R Все:R System:R
    )
     
    echo y|cacls.exe %1 /C /G Администратор:C Все:C System:C
    echo y|cacls.exe %1\*.exe /C /G Администратор:R Все:R System:R
     
     

    Всего записей: 765 | Зарегистр. 16-08-2008 | Отправлено: 18:26 11-05-2016 | Исправлено: VidelSamogO, 01:25 12-05-2016
    mrsimpson

    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Объясните, пожалуйста, про вывод результатов в файл. Допустим, я запускаю питоновский скрипт, здесь ping совершенно условен, там будут другие параметры:

    Код:
    c:\script.py --ping google.com

     
    Для вывода результов я использую скобку:

    Код:
    c:\script.py --ping google.com > result.txt

     
    После чего, результат работы этого скрипта, а именно ping, записывается в файл result.txt. Если мне надо записывать результат в конец файла, я использую двойную скобку >>.
    Это все понятно. Но не могу понять, как мне выводить не только результат, но и сами параметры. То есть, мне надо в result.txt обязательно видеть строку целиком с результами:

    Код:
    c:\script.py --ping google.com
    2 ms
     

    Всего записей: 18 | Зарегистр. 10-04-2016 | Отправлено: 05:25 12-05-2016
    Pasha_ZZZ



    Platinum Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    mrsimpson
    Надо вывести в питоновском скрипте то, что нужно. Допустим
    Цитата:
    import sys
    print str(sys.argv)
    выведет все аргументы, включая имя скрипта. Только в квадратных скобках и с апострофами. Если нужен вывод в другом виде - нужно, допустим, собрать командную строку в цикле из отдельных аргументов. Кол-во аргументов комстроки
    Цитата:
    len(sys.argv)
    а имя скрипта
    Цитата:
    sys.argv[0]

     
    Добавлено:
    VidelSamogO
    Цитата:
    в конце  %%~pi появляется слэш
    А зачем было указывать %%~pi, когда можно было просто %%i? Ну да, там в конце точка. Но точка - это текущий каталог, поэтому, например, можно не избавляться от концевого слеша. Идентичны, например, пути:
    Цитата:
    C:\Test
    C:\Test\.
    C:\Test\.\.
    и так далее, можно продолжить самостоятельно

    Всего записей: 12360 | Зарегистр. 11-03-2002 | Отправлено: 06:17 12-05-2016
    mrsimpson

    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Pasha_ZZZ
    Нет-нет, изменять я скрипт не буду. Мне надо вообще, как вывести всю командную строку. Путь это будет не питоновский скрипт, а та же стандартная утилита ping от Microsoft. Каким образом мне эту команду
    Код:
    c:\Users\Admin>ping google.com > result.txt

    вывести результат в result.txt, где будет:
    Код:
    c:\Users\Admin>ping google.com > result.txt
    Обмен пакетами с google.com [173.194.113.199] с 32 байтами данных:
    Ответ от 173.194.113.199: число байт=32 время=2мс TTL=58
    Ответ от 173.194.113.199: число байт=32 время=1мс TTL=58
    Ответ от 173.194.113.199: число байт=32 время=2мс TTL=58
    Ответ от 173.194.113.199: число байт=32 время=1мс TTL=58
     
    Статистика Ping для 173.194.113.199:
        Пакетов: отправлено = 4, получено = 4, потеряно = 0
        (0% потерь)
    Приблизительное время приема-передачи в мс:
        Минимальное = 1мсек, Максимальное = 2 мсек, Среднее = 1 мсек
    то есть, самое главное, в файле обязательно должны быть те параметры, с которыми она запускалась, а не только результат?

    Всего записей: 18 | Зарегистр. 10-04-2016 | Отправлено: 06:31 12-05-2016 | Исправлено: mrsimpson, 06:33 12-05-2016
    ipmanyak



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

    Код:
     
    echo "ping 173.194.113.199 -n 4 > result.txt" > result.txt
    ping 173.194.113.199  -n 4 >> result.txt                    
     

     


    ----------
    В сортире лучше быть юзером, чем админом...

    Всего записей: 11718 | Зарегистр. 10-12-2003 | Отправлено: 07:04 12-05-2016
    morkovni

    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Помогите пожалуйста решить следующую проблему:  
    Есть локальный компьютер (Windows 7x64), в нем открываю cmd.exe, проверяю кодировку: chcp - 866  
    Проблем в работе с папками с названием на кириллице нет.  
    Подключаюсь к cmd.exe удаленного сетевого компьютера (пробовал и W7 и XP) через psexec.exe,  
    проверяю кодировку: chcp - 866.  
    И тут возникают проблемы в работе с папками и файлами с названием на кириллице (и W7 и XP):  
    dir d:  
    Содержимое папки D:\  
     
    ................    <DIR>     Новая папка  
    ................    <DIR>     docs  
     
    ввожу команду cd /d d:\Новая папка  
    получаю:  
    cd /d d:\{КРАКОЗЯБРЫ}  
    "Синтаксическая ошибка в имени файла, имени папки или метке тома  
     
    Декодер https://www.artlebedev.ru/tools/decoder/advanced/ определил кодировку следующим образом:  
    ISO-8859-5 --> KOI8-U + KOI8-R --> 7-bit ASCII  
     
    Подскажите, как исправить?  

    Всего записей: 56 | Зарегистр. 01-04-2015 | Отправлено: 12:07 13-05-2016 | Исправлено: morkovni, 14:13 13-05-2016
    Vidockq

    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Подскажите батник для копирования по уникальной информации о флешке.
    Спасибо.

    Всего записей: 176 | Зарегистр. 14-01-2016 | Отправлено: 10:23 14-05-2016
    VitaminP



    Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Vidockq
    У меня так это происходит:
     
    @echo off
    set test=Papka
    for %%a in (F G H I J K L M N O P Q R S T U) do if exist "%%a:\%test%" set DISK=%%a
    if "%DISK%"=="" echo Устройство не найдено && ping -n 3 localhost > nul && goto eof
    :: Далее команды копирования/синхронизации
     
    В корне папки должен лежать идентификационный файл или папка (Papka). Если скрипт найдёт диск с правильным идентификатором, то выполнит последующие команды.

    Всего записей: 306 | Зарегистр. 28-08-2013 | Отправлено: 11:13 14-05-2016 | Исправлено: VitaminP, 12:52 14-05-2016
    Barragan

    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Помогите написать скрипт, автоматизирующий действия с программой)
     
    Дано - reshacker.exe, с помощью которого можно посмотреть все ресурсы внутри файлов.
    Дана папка, где находятся все ресурсные файлы с разными расширениями.
     
    Ресхакеру подаётся команда для каждого файла:
    "C:\Program Files (x86)\Resource Hacker\ResourceHacker.exe" -extract "C:\temp\explorer.exe", "C:\temp\explorer.exe\explorer.exe.rc", ,,
     
    моя задача - упростить это дело. Скрипт будет:
    а) подставлять в команду названия файлов
    б) подставлять название файла (с расширением) в качестве названия файла выхода, типа explorer.exe.rc
    в) создавать новую папку для каждого файла, типа c:\temp\explorer.exe\, куда складируется всё нажитое добро.
    Выполнив эту задачу, я постараюсь модифицировать скрипт для другой задачи, которую ставил перед собой изначально)

    Всего записей: 35 | Зарегистр. 16-01-2016 | Отправлено: 12:20 17-05-2016
    Evgeny1996

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

    Всего записей: 1 | Зарегистр. 15-05-2016 | Отправлено: 10:05 18-05-2016
    ipmanyak



    Platinum Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Evgeny1996  
    MD С:\ПАПКА1  
    MD С:\ПАПКА2
    xcopy  С:\ПАПКА1\*.txt  С:\ПАПКА2
    синхронизация папок  
    robocopy /MIR /E /V С:\ПАПКА2 С:\ПАПКА1


    ----------
    В сортире лучше быть юзером, чем админом...

    Всего записей: 11718 | Зарегистр. 10-12-2003 | Отправлено: 12:41 23-05-2016 | Исправлено: ipmanyak, 12:42 23-05-2016
    Joo1z



    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Туплю, опять туплю.
     Есть задачка, нужно в конфиг в виде xml заменить блок.
    Примерно так:
    Было:
    <settings>
    <param1>0</param1>
    </settings>
    Стало:
    <settings>
    <param3>1</param3>
    <param4>
    <param4a>0</param4a>
    </param4>
    </settings>
    Естественно, до и после блока settings нужно оставить данные неизменными.
    Могу, например SED'ом выцепить sed /^<settings^>/,/^<\/settings^>/!d "config.xml"
    но ка произвести замену именно внутри блока, не соображу. SED внутри SED?
    Есть файл config_add.xml где только нужный блок <setings>, нужно его вставить внутрь config.xml.

    Всего записей: 123 | Зарегистр. 17-02-2009 | Отправлено: 13:31 23-05-2016
    ComboRam

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

    Всего записей: 6 | Зарегистр. 25-05-2016 | Отправлено: 23:01 25-05-2016 | Исправлено: ComboRam, 08:51 27-05-2016
    Pasha_ZZZ



    Platinum Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    Joo1z
    Ну навскидку что-то типа
    Цитата:
    sed s/^<settings^>/@@@@####/ config.xml|sed /####/,/^<\/settings^>/!d|sed s/@@@@/<что_там_вам_нужно>/
    ну надо попробовать и допилить напильником слегка, зависит от версии SED, где надо добавить \n например

    Всего записей: 12360 | Зарегистр. 11-03-2002 | Отправлено: 23:14 25-05-2016
    Ciber SLasH



    Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Приветствую всех!
    Нужно из BAT-ника, перед запуском программы, определить не нажата ли клавиша  <Shift>. Если нажата, то запустить программу.
    Как это реализовать?

    Всего записей: 261 | Зарегистр. 07-04-2016 | Отправлено: 14:10 26-05-2016
    ComboRam

    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Ciber SLasH
    если нет желания заморачиваться то возьми choice.exe
    он правда shift не поддерживает а только  
    The valid choice characters are: a-z, A-Z, 0-9 and ASCII values of 128 to 254
    поставь timeout сколько надо и вуаля.

    Всего записей: 6 | Зарегистр. 25-05-2016 | Отправлено: 21:26 26-05-2016
    ipmanyak



    Platinum Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Ciber SLasH встроенными средствами bat и системы нажатие SHIFT не отследить.

    ----------
    В сортире лучше быть юзером, чем админом...

    Всего записей: 11718 | Зарегистр. 10-12-2003 | Отправлено: 08:00 27-05-2016 | Исправлено: ipmanyak, 08:02 27-05-2016
    Ciber SLasH



    Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    ipmanyak
    Не важно какими средствами. Можно внешней программой (желательно маленькой).

    Всего записей: 261 | Зарегистр. 07-04-2016 | Отправлено: 11:17 27-05-2016
    ipmanyak



    Platinum Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Ciber SLasH Почему именно SHIFT нужен, а не другие клавиши?  


    ----------
    В сортире лучше быть юзером, чем админом...

    Всего записей: 11718 | Зарегистр. 10-12-2003 | Отправлено: 11:49 27-05-2016
    42243

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

    Всего записей: 28 | Зарегистр. 17-08-2008 | Отправлено: 01:03 29-05-2016
       

    Страницы: 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

    Компьютерный форум Ru.Board » Операционные системы » Microsoft Windows » Задачи на bat-файлах 12
    KLASS (06-03-2018 00:44): Объединение тем по сценариям: Сценарии Windows


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

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

    BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

    Рейтинг.ru