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

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в 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
    shadow_member



    Platinum Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Парни, что дописать в батник
    Цитата:
    @echo off
     
    :: Block the Internet
    :: Run as administrator
    netsh advfirewall firewall add rule name="@ Block all IN connections" dir=in action=block description="Block all inbound connections"
    netsh advfirewall firewall add rule name="@ Block all OUT connections" dir=out action=block description="Block all outbound connections"
     
    echo Rules successfully added to the Firewall
     
    pause
    , чтобы после вывода сообщения о выполнении  
       
    он ждал 3 сек., и если я не нажму any key, то сам закрывался бы?

    Всего записей: 22354 | Зарегистр. 18-07-2006 | Отправлено: 20:32 23-03-2017 | Исправлено: shadow_member, 20:32 23-03-2017
    Pasha_ZZZ



    Platinum Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    shadow_member
    Цитата:
    он ждал 3 сек., и если я не нажму any key, то сам закрывался бы?
    Вместо
    Цитата:
    pause
    нужно
    Цитата:
    timeout /t 3

    Всего записей: 12361 | Зарегистр. 11-03-2002 | Отправлено: 20:35 23-03-2017
    YuS_2



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

    Код:
    timeout /t 3

    или

    Код:
    >nul pathping -h 1 -p 3000 -q 1 -w 1 127.0.0.1

    Всего записей: 3218 | Зарегистр. 03-02-2009 | Отправлено: 20:37 23-03-2017 | Исправлено: YuS_2, 20:42 23-03-2017
    shadow_member



    Platinum Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Pasha_ZZZ
    YuS_2
    Проверил, великолепно, даже countdown работает, чего я не ожидал, а просить стеснялся
    Спасибо огромное!

    Всего записей: 22354 | Зарегистр. 18-07-2006 | Отправлено: 21:23 23-03-2017
    NskRonin



    Advanced Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    Всех приветствую.
     
    Подскажите, может кто сталкивался. Хостер скинул архив сайта, а в нем все кириллические файлы стали такими именами.
     
    Попробовал этим кодировщиком по декодировать названия - ни чего не получилось.
     
    Может кто подсказать как вернуть этим файлам русские имена?


    ----------
    Выбери себе работу по душе, и тебе не придется работать ни одного дня в своей жизни.
    /Конфуций/

    Всего записей: 1608 | Зарегистр. 10-05-2007 | Отправлено: 19:28 03-04-2017
    BorlandIMHO

    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    NskRonin
    "Архив сайта" - именно архив (.gz, .tgz, .bz, .zip и т.п.) или же просто пачка файлов? Если архив, то его нужно просто-напросто распаковать правильным распаковщиком, который понимает UTF-8.
    Думается, исходное имя выложенного файла было "скб1102.jpg", после чего он был упакован архиватором с поддержкой UTF-8, а затем распакован либо архиватором без таковой поддержки, либо просто неправильно. Исходное имя в UTF-8 в результате перекорёжилось в CP866...
    Чисто теоретически, нарисовать батник, "выправляющий" эти имена, можно, и даже не одним способом, но на практике, при наличии "кривого" исходного архива, лучше всё-таки попробовать правильно распаковать его...

    ----------
    http://www.imho.ws

    Всего записей: 2376 | Зарегистр. 12-10-2006 | Отправлено: 23:42 03-04-2017
    NskRonin



    Advanced Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    BorlandIMHO
     
    Архив я удалил сразу как только распаковал. Впервые с таким столкнулся.
     
    Т.е. это CP866 кодировка?
     
    Добавлено:
    Все. Получилось. Этим декодером я смог все привести с читабельному тексту.
     
    На счет батника - я думаю я его буду дольше писать, чем сделаю в ручную - битых файлов не много.
     
    Спасибо за подсказку.

    ----------
    Выбери себе работу по душе, и тебе не придется работать ни одного дня в своей жизни.
    /Конфуций/

    Всего записей: 1608 | Зарегистр. 10-05-2007 | Отправлено: 05:29 04-04-2017
    korosya

    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Интересно можно ли как-нибудь "добыть" значение переменной, изменяемой в блоке setlocal enabledelayedexpansion....endlocal?

    Код:
    set a=str1
    setlocal enabledelayedexpansion
    .
    .
    set a=str2
    .
    endlocal
    echo %a%

    Хотелось бы увидеть в результате str2.
    Пока вижу только один путь - вывести в файл, а затем считать. Но может возможно сделать ещё как-то?...

    Всего записей: 1005 | Зарегистр. 19-07-2003 | Отправлено: 20:59 06-04-2017
    igor_andreev

    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    korosya
    вызвать метку и передать ей в качестве параметра
    как-то так:

    Цитата:
    set a=str1  
    setlocal enabledelayedexpansion  
    .  
    .  
    set a=str2  
    call :label !a!
    .  
    endlocal  
    exit /b
    :label
    set a=%1
    echo %a%
     

     

    Всего записей: 1704 | Зарегистр. 08-12-2004 | Отправлено: 21:07 06-04-2017 | Исправлено: igor_andreev, 21:12 06-04-2017
    korosya

    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    igor_andreev
    Не получается. Мне надо использовать новое значение %а% после endlocal. То что предлагаете вы равносильно:

    Код:
    setlocal enabledelayedexpansion  
     .  
     .  
     set a=str2  
    echo !a!
     .  
     endlocal

    Всего записей: 1005 | Зарегистр. 19-07-2003 | Отправлено: 21:46 06-04-2017
    igor_andreev

    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    korosya
    Виноват-с, без проверки написал
    Тогда так:

    Код:
    @echo off
     
    set "a=str1"  
    setlocal enabledelayedexpansion  
    set "a=str2"
     
    rem строчка в конце вместо endlocal  
    for /f "delims=" %%A in (""!a!"") do endlocal & set "a=%%~A"
     
    echo %a%  
     
     
     

    Всего записей: 1704 | Зарегистр. 08-12-2004 | Отправлено: 22:17 06-04-2017 | Исправлено: igor_andreev, 22:25 06-04-2017
    korosya

    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    igor_andreev
    Спасибо! Похоже то, что нужно.

    Всего записей: 1005 | Зарегистр. 19-07-2003 | Отправлено: 22:40 06-04-2017
    GCRaistlin



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

    Код:
     
    for /f "delims=" %%A in ("!a!") do endlocal & set a=%%A
     

    И можно проще и быстрее:

    Код:
     
    endlocal & set a=%a%
     


    ----------
    Magically yours
    Raistlin

    Всего записей: 3962 | Зарегистр. 18-04-2005 | Отправлено: 00:52 07-04-2017 | Исправлено: GCRaistlin, 00:57 07-04-2017
    igor_andreev

    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    GCRaistlin
    На случай спецсимволов. Никтож не знает, что в str2 попадет. Может korosya парсит там файл на предмет URL с амперсандами типа "/topic.cgi?forum=62&bm=1&topic=27959"
     

    Код:

    @echo off  
     
    set "a=str1"  
    setlocal enabledelayedexpansion    
    set "a=>&|<"    
    for /f "delims=" %%A in (""!a!"") do endlocal & set "a=%%~A"  
     
    echo "%a%"

     
    Вариант, который попроще и быстрее "скиснет" сразу.  
    А с FOR только стандартная для батников проблема со знаками процента и стандартная же для "delayedexpansion" проблема с восклицательными знаками. Обе решаемы.
     
     
     

    Всего записей: 1704 | Зарегистр. 08-12-2004 | Отправлено: 03:50 07-04-2017 | Исправлено: igor_andreev, 04:00 07-04-2017
    danetz

    Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Ребята помогите, очень простой вопрос. Но принципиальный для пытливого ума) Простейшая операция reg add проходит по разному - если вбивать в cmd команду и если запускать бат файл.
     
    reg add HKLM\SOFTWARE\Classes\Excel.Sheet.12\shell\Open\command /ve /t REG_SZ /d "\"C:\Program Files\Microsoft Office\Office12\EXCEL.EXE\" \"%1\"" /f
     
    если открыть смд и вписать эту строку то в реестре добавится запись с "%1"
    если же я сохраню эту команду в бат файл, то у меня знак процента и еденичка "сьедаются"!
    Как такое возможно???

    Всего записей: 400 | Зарегистр. 25-02-2012 | Отправлено: 07:34 07-04-2017
    NIKZZZZ



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

    Всего записей: 5365 | Зарегистр. 08-02-2006 | Отправлено: 07:40 07-04-2017
    Pasha_ZZZ



    Platinum Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    danetz
    Так и должно быть, %1 в батнике - это первый переданный ему параметр, в батнике должно быть %%1

    Всего записей: 12361 | Зарегистр. 11-03-2002 | Отправлено: 07:40 07-04-2017
    danetz

    Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Pasha_ZZZ
    NIKZZZZ
    Спасибо !!

    Всего записей: 400 | Зарегистр. 25-02-2012 | Отправлено: 08:02 07-04-2017
    GCRaistlin



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

    Цитата:
    На случай спецсимволов. Никтож не знает, что в str2 попадет. Может korosya парсит там файл на предмет URL с амперсандами типа "/topic.cgi?forum=62&bm=1&topic=27959"

    А вы проверьте:

    Код:
     
    set "a=str1"
    setlocal enabledelayedexpansion
    set "a=>&|<"
    for /f "delims=" %%A in ("!a!") do endlocal & set a=%%A
     
    echo "%a%"
     

    Спецсимволы не работают при разворачивании FOR-переменных.
     

    Цитата:
    Вариант, который попроще и быстрее "скиснет" сразу.

    Согласен, не подумал про спецсимволы.
     

    Цитата:
    А с FOR только стандартная для батников проблема со знаками процента и стандартная же для "delayedexpansion" проблема с восклицательными знаками. Обе решаемы.

    Нет в приведенной конструкции этих проблем. Нечего решать.

    ----------
    Magically yours
    Raistlin

    Всего записей: 3962 | Зарегистр. 18-04-2005 | Отправлено: 11:22 07-04-2017
    andron_g1975



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

    Всего записей: 380 | Зарегистр. 09-11-2008 | Отправлено: 20:18 10-04-2017
       

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