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

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



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

    Цитата:
    Необходима вот эта программа-перекодировщик:  Код: rem Конвертер кодировок из комплекта GnuWin32 http://gnuwin32.sourceforge.net/packages/libiconv.htm   rem Скачивать можно без установщика - "Binaries  Zip" http://gnuwin32.sourceforge.net/downlinks/libiconv-bin-zip.php

     
     
    Да я вроде её и использовал и не знаю почему не работает

    Всего записей: 113 | Зарегистр. 11-07-2015 | Отправлено: 07:01 10-09-2016 | Исправлено: Linksach, 07:03 10-09-2016
    YuS_two



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

    Видно, что сценарий не находит программу "iconv".
    Для того, чтобы она заработала, iconv.exe должен находиться либо рядом с батником, либо по одному из путей, прописанных в системной переменной PATH - дайте команду:

    Код:
    echo %path%

    и увидите, что в ней прописано...

    Всего записей: 399 | Зарегистр. 28-03-2016 | Отправлено: 12:04 10-09-2016
    GCRaistlin



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

    Цитата:
    echo %path%

    Лучше

    Код:
    set path


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

    Всего записей: 3960 | Зарегистр. 18-04-2005 | Отправлено: 12:18 10-09-2016
    YuS_two



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

    Цитата:
    Лучше

    Код:
    set path

     

    Это если требуется получить значения всех переменных начинающихся на "path...", а в данном случае, это не лучше, наверное, т.к. больше запутает человека...

    Всего записей: 399 | Зарегистр. 28-03-2016 | Отправлено: 12:49 10-09-2016
    GCRaistlin



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    YuS_two
    Едва ли переменных таких будет много, зато если в путях будет "&"...

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

    Всего записей: 3960 | Зарегистр. 18-04-2005 | Отправлено: 13:02 10-09-2016
    YuS_two



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

    Цитата:
    зато если в путях будет "&"...

    Это да, но и путей таких, тоже, вряд ли, должно быть в этой переменной.
    В любом случае, от этого вполне спасают кавычки:

    Код:
    echo "%path%"


    Всего записей: 399 | Зарегистр. 28-03-2016 | Отправлено: 13:56 10-09-2016
    GCRaistlin



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    YuS_two
    Это только в том случае, если путь с "&" сам добавлен без кавычек

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

    Всего записей: 3960 | Зарегистр. 18-04-2005 | Отправлено: 14:13 10-09-2016
    YuS_two



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

    Цитата:
    если путь с "&" сам добавлен без кавычек

    Это кто же его так добавлять будет, с кавычками?
    Ну тогда с защитой от этого и даже от других непредвиденных ситуаций, пакетник:

    Код:
    @echo off
    setlocal enabledelayedexpansion
    echo !path!
    pause


    Ну, или прямо из командной строки

    Код:
    cmd /v/c echo !path!

    Всего записей: 399 | Зарегистр. 28-03-2016 | Отправлено: 14:38 10-09-2016 | Исправлено: YuS_two, 14:44 10-09-2016
    GCRaistlin



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    YuS_two
    Не слишком ли сложные замены универсального и лаконичного

    Код:
     
    set path
     

    ?

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

    Всего записей: 3960 | Зарегистр. 18-04-2005 | Отправлено: 14:54 10-09-2016
    YuS_two



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

    Цитата:
    Не слишком ли сложные замены

    А чего тут сложного-то и длинного?

    Код:
    cmd /v/c echo !path!

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

    Всего записей: 399 | Зарегистр. 28-03-2016 | Отправлено: 15:03 10-09-2016
    GCRaistlin



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

    Цитата:
    А чего тут сложного-то и длинного?

    Ну хотя бы то, что для освежения в памяти этих ключей вам пришлось залезть в справку к cmd, не правда ли? Да и - длиннее, как ни крути. Как и вариант с "echo", кстати.
    В таких "подручных" командах важна лаконичность. Я лично обычно не утруждаю себя даже тем, чтобы дописывать "path" до конца, - "set p" использую.

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

    Всего записей: 3960 | Зарегистр. 18-04-2005 | Отправлено: 15:18 10-09-2016
    YuS_two



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

    Цитата:
    не правда ли?

    Неправда, это команды, которыми часто приходится пользоваться... но и в справку заглядывать - это не зазорно ведь, даже наоборот, сам рекомендую всем, зачастую.
    Но то, что длиннее - согласен. Так ведь и первоначальное echo %path%, во многих случаях, вполне достаточно, ибо в path такие специфичные вещи, как спецсимволы, не думаю, что осознанно кто-то будет добавлять, как и пути с кавычками...
    Ну да ладно, главное, что есть разные способы и возможности, а безвыходных ситуаций почти нет...

    Всего записей: 399 | Зарегистр. 28-03-2016 | Отправлено: 15:53 10-09-2016
    GCRaistlin



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

    Цитата:
    Неправда, это команды, которыми часто приходится пользоваться...

    Командой cmd-то да, а вот ключом /v к ней мне лично до сей поры ни разу не приходилось.

    Цитата:
    Так ведь и первоначальное echo %path%, во многих случаях, вполне достаточно

    Так и оно длинее, чем "set p". Которого пока мне тоже было всегда достаточно.

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

    Всего записей: 3960 | Зарегистр. 18-04-2005 | Отправлено: 17:14 10-09-2016
    YuS_two



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

    Цитата:
    а вот ключом /v к ней мне лично до сей поры ни разу не приходилось.

    Очень даже зря, это замечательный ключик, особенно когда требуется работать со спецсимволами... кстати, это сочетание позволяет значительно сокращать код и заменять кучу команд одной строкой. В однострочных командах ведь действуют правила для блоков команд, заключенных в скобки, а этот ключик позволяет работать с отложенным раскрытием, со всеми сопутствующими плюсами. К тому же, команды выполняются в новом процессе cmd, что дает очередные плюсы.
    Например, простой случай:
    передать значение локальной переменной наружу:

    Код:
    setlocal enabledelayedexpansion
    set x=111
    echo x=%x%
    endlocal&set y=%x%&cmd /v/c echo y=!y!^&echo "%x%" "!x!" "%y%" "!y!"
    :: или так:
    rem endlocal&set y=%x%&cmd /v/c "echo y=!y!&echo "%x%" "!x!" "%y%" "!y!""
     
    echo "%x%" "!x!" "%y%" "!y!"

    А если расписать это всё построчно, то будет уже не так красиво...
     
    Хотя, конечно, можно и так:

    Код:
    endlocal&set y=%x%&call echo y=%%y%%

    но тут не будет плюсов работы со спецсимволами и прочих радостей однострочек...
     
    В общем, это незаменимый инструмент в однострочных командах.
     

    Цитата:
    мне тоже было всегда достаточно.

    ключевые слова выделены. А я ведь давал совет не Вам и даже не себе, поэтому лучше предусмотреть этот момент, и не запутывать человека лишней информацией при выводе значений переменных...

    Всего записей: 399 | Зарегистр. 28-03-2016 | Отправлено: 18:32 10-09-2016 | Исправлено: YuS_two, 18:37 10-09-2016
    Linksach



    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    YuS_two
     
    Как точно называется программа- libiconv-1.9.2-1.exe или как пишете вы iconv.exe.У меня libiconv-1.9.2-1.exe скачался и файл libiconv-1.9.2-1.exe лежит рядом с батником а установилась эта программа на диск C в папку Program Files/GnuWin32 или я неправильно что-то сделал
     
    Всё -я вроде бы разобрался-надо было вам объяснить проще-что из Program Files/GnuWin32/bin закинуть iconv.exe ,положив рядом с батником.Ну да ладно,сейчас батник -преобразует некоторые спецсимволы и создаёт дерево каталогов.Сижу,жду окончания процесса.Как закончится отпишусь о результате
     
     
    YuS_two
     
    Всё конвертировалось отлично и создались каталоги с папками и подпапками.Названия папок вроде соответствуют.
    Вообщем всё работает и через cmd только выполнение немного дольше чем скрипт в Powershell
    А почему так.Я просто вообще не знаком с Powershell и скрипт запускал впервые.Видимо и другие скрипты в Powershell работают намного быстрее чем через cmd
    Время выполнения
    Код:
    Start: 10.09.2016 18:54:55,65
    Stop: 10.09.2016 19:15:54,60

     
    Большое вам спасибо за проделанную работу!

    Всего записей: 113 | Зарегистр. 11-07-2015 | Отправлено: 18:52 10-09-2016 | Исправлено: Linksach, 19:32 10-09-2016
    YuS_two



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

    Цитата:
    файл libiconv-1.9.2-1.exe лежит рядом с батником

    Это установщик. Рядом с батником должны быть три файла: "iconv.exe", "libiconv2.dll" и "libintl3.dll" (там есть привязка к библиотекам)
    вот тут их можно взять

    Цитата:
    установилась эта программа на диск C в папку Program Files/GnuWin32

    А вот в "Program Files" лучше не устанавливать её. Надо выбирать не защищённый UAC каталог для установки, чтобы не было впоследствии проблем с доступом к этому каталогу...
    Хотя бы так:
    C:\GnuWin32
    А потом в системную переменную path, добавить путь C:\GnuWin32\bin

    Всего записей: 399 | Зарегистр. 28-03-2016 | Отправлено: 19:24 10-09-2016 | Исправлено: YuS_two, 19:25 10-09-2016
    deadmz1980



    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Здравствуйте.  
    Подскажите пожалуйста, как решить такую проблему, есть батник бэкапа 1с, на платформе 8.2 работал нормально, после перехода на 8.3, после запуска и выполнения бэкапа в процессах так и остается висеть процесс cmd и 1с, хотя файл бэкапа благополучно выгрузился и скопировался на шару. Висящий в процессах процесс 1с мешает созданию следующего бэкапа. Спасибо за помощь!  
     
    Вот код батника:  

    Код:
    echo off  
    Set folder=%DATE%  
    mkdir c:\Backup\"%folder%"  
    if exist c:\Backup\currentdate.txt del c:\Backup\currentdate.txt  
    echo %folder% >> c:\Backup\currentdate.txt  
    copy /B c:\Backup\1c83backup.log+c:\Backup\currentdate.txt c:\Backup\1c83backup.log  
    "C:\Program Files (x86)\1cv8\8.3.7.2027\bin\1cv8.exe" config /s*\* /n*** /p*** /DumpIB "c:\Backup\%folder%\1Cv83.dt" /Out"c:\Backup\1c83backup.log" -NoTruncate  
    "C:\Program Files (x86)\1cv8\8.3.7.2027\bin\1cv8.exe" config /s*\* /n*** /p*** /UpdateDBCfg /DisableStartUpMessages /Out"c:\Backup\1c83backup.log" -NoTruncate  
    "C:\Program Files (x86)\1cv8\8.3.7.2027\bin\1cv8.exe" config /s*\* /n*** /p*** /IBCheckAndRepair /DisableStartUpMessages /Out"c:\Backup\1c83backup.log" -NoTruncate  
    if not exist \\*.*.*.*\BackUP\%folder%\ mkdir \\*.*.*.*\BackUP\%folder%\  
    copy /b /y C:\Backup\%folder%\*.* \\*.*.*.*\BackUP\%folder%\

    Всего записей: 30 | Зарегистр. 10-07-2009 | Отправлено: 19:37 10-09-2016 | Исправлено: deadmz1980, 19:40 10-09-2016
    Jon_Dow

    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    deadmz1980
    ты уверен что тебе именно в батники надо? Очевидно что один из вызов 1С не завершен.
    Но если ты настаиваешь то допиши после копирования:
    Код:
    taskkill.exe /im 1cv8* /f
    exit 0

    Но правильно будет разобраться какая из трех строк перестала отрабатывать нормально и исправить ошибку в ключах запуска.
     
     
    Добавлено:
    Плюс к этому я вижу в ключах запуска конструкцию вида  /s*\*
    Это значит что у тебя 1С-кластер - то есть используется СУБД - и ты делаешь такими средствами бэкап?!

    Всего записей: 732 | Зарегистр. 25-11-2006 | Отправлено: 19:52 10-09-2016
    deadmz1980



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

    Цитата:
    Это значит что у тебя 1С-кластер - то есть используется СУБД - и ты делаешь такими средствами бэкап?!

    Это запасной бэкап, основной делается на postgres.

    Всего записей: 30 | Зарегистр. 10-07-2009 | Отправлено: 20:11 10-09-2016
    Jon_Dow

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

    ----------
    Я такую личшную нэприязнь испитываю к яндексгуглкасперский, что кушать не могу.:abuse: @Billon

    Всего записей: 732 | Зарегистр. 25-11-2006 | Отправлено: 20:19 10-09-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