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

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

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

vu1tur (25-01-2010 12:41): лимит страниц, продолжение: http://forum.ru-board.com/topic.cgi?forum=62&topic=19668  Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 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 109 110 111 112 113 114 115 116 117

   

vu1tur



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

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

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

  • Всего записей: 3690 | Зарегистр. 01-02-2003 | Отправлено: 11:37 26-05-2009 | Исправлено: TechnicsKuzya, 13:53 27-12-2009
    BagaBaga

    Full Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Как решить такую задачу:
     
    считать значение (допустим строкой)
     
    проверить, что оно соответсвует формату DD MM YYYY
     
    вывести на экран Да или Нет - по условию

    Всего записей: 463 | Зарегистр. 14-11-2005 | Отправлено: 13:47 24-12-2009
    Verter



    Full Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    wolf0425
    Ты монстр! Спасибо, работает!

    Всего записей: 598 | Зарегистр. 10-01-2004 | Отправлено: 17:57 24-12-2009
    SuperKolobok



    Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    подскажите, в папке есть один exe-шник, точное название неизвестно только начало типа wkt-XXXX.exe, XXXX это версии файла, они периодически меняются, нужно определить наличие самого файла, его название и запустить его.
     
    в принципе вроде рещил вопрос, вроде работает
    for /r . %%g in (wkt-*.exe) do start /wait %%g
    правильно или есть другие варианты ?

    Всего записей: 218 | Зарегистр. 14-12-2005 | Отправлено: 18:22 24-12-2009 | Исправлено: SuperKolobok, 18:48 24-12-2009
    sL4yer



    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Привет. Как бат-файле сделать проверку на вводимый символ. Например, если цифра  или набор цифр, - то делать одно действие, а если буква или набор букв - другое.
     
    Зарание спасибо.

    Всего записей: 49 | Зарегистр. 22-10-2008 | Отправлено: 21:55 24-12-2009
    mugil_cephalus

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

    Цитата:
    Привет. Как бат-файле сделать проверку на вводимый символ. Например, если цифра  или набор цифр, - то делать одно действие, а если буква или набор букв - другое.  
     
    Зарание спасибо.

     
     

    Цитата:
    подскажите, как проверить, что переменная, переданная в командный файл (%1), состоит из двух цифр (00 - 99) и отличить этот случай от других вариантов (например: 0, 7A 001, aa, x, asd и т.п.)

     
    http://forum.ru-board.com/topic.cgi?forum=62&topic=17154&start=1680#17
     
    совет от 01MDM

    Цитата:
    Код:  
    echo %1 | 1>nul findstr /b "\<[0-9][0-9]\>" || echo wrong param %1  

     
    findstr /?

    Всего записей: 1072 | Зарегистр. 07-09-2009 | Отправлено: 22:39 24-12-2009 | Исправлено: mugil_cephalus, 22:44 24-12-2009
    Umboking

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

    Цитата:
    xx\xxx - имя относительно текущего каталога. Если тебе нужно было проверять наличие папки xxx не в папке xx, а в текущей - так и надо было писать...
    Понятно, значит я недостаточно чётко обьяснил.
    Цитата:
    если каждая команда использует или консольный вывод предыдущей или признак успешного завершения предыдущей - то развертывание этих 10 команд в столбик даст еще более нечитаемый столбик команд, да еще и с зависимостью его работоспособности от пробелов в концах строк.  
    вон выше мне три sed в строку написали, с коротенькими скриптиками.  
    как сам думаешь - если развернуть эту строку в три - она станет более читаемой или нет?
    Ну в этом случае конечно, тут и спорить не чего.
    Цитата:
    ну а до ограничения на длину строки надо сначала дорасти, точно знаю что строка в 260 символов проблем в ХР еще не вызывает (это одна команда - параметры длинные)
    Это только так кажется, что 260 символов - это много. А если команды работают с путями с не хилой вложенностью, то эти 260 быстро кончаться   Однако всё это не нужный спор, я же не оспариваю твою правоту, просто привычка есть привычка да и понятие "удобство" не менее субъективное чем вкус пищи к примеру    
     
     

    Всего записей: 31 | Зарегистр. 21-12-2009 | Отправлено: 01:00 25-12-2009
    mugil_cephalus

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

    Код:
    set "var=val"
    set /a cnt=%var%+1
    if "%errorlevel%" equ "0" (echo digits) else echo characters

     
    Добавлено:
    BagaBaga
    покажи конкретный пример, - чего тебе надо сделать, а то теоретическая выкладка несовсем понятна

    Всего записей: 1072 | Зарегистр. 07-09-2009 | Отправлено: 10:32 25-12-2009
    dimpase

    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Скажите, как скопировать в домене, под обычным пользователем, но только с правами администратора.Нужно копировать на диск с, не дает.И нужно права все тоже, пользуюсь командой xcopy с ключом О, права копирует,но все-ровно не дает потом, копирует только корневую папку, а подпапки не копирует с файлами...
    Что делать?

    Всего записей: 130 | Зарегистр. 29-09-2008 | Отправлено: 12:09 26-12-2009
    mugil_cephalus

    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    насколько память не подводит, N страниц назад, имярек спрашивал, как создать пустой файл *.ext, и, опять же, если не ошибаюсь, совет был - в GUI заранее создать, допустим *.txt, и в будущем - в cli - копировать его в destination  
    сейчас, при решении задачи, сделал себе это так
     
     

    Код:
    0>nul 2>nul 1>file.txt set /p=""

     
     
    total: 0 Kb size file.txt (без добавления CR/LF)
     
     
     
     
    Добавлено:
    dimpase
    runas /?
     

    Цитата:
    права копирует
     
    повидимому, нужно копировать права и на subdir и права на вложенные файлы

    Всего записей: 1072 | Зарегистр. 07-09-2009 | Отправлено: 12:17 26-12-2009 | Исправлено: mugil_cephalus, 12:20 26-12-2009
    dimpase

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

    Цитата:
    mugil_cephalus

    Вообще то я и копирую все права.Но ничего не получается.
    Скрипт запускается из АД.
    В настройках шаблона стоит производить установку с повышенными привелегиями.

    Всего записей: 130 | Зарегистр. 29-09-2008 | Отправлено: 12:38 26-12-2009
    mugil_cephalus

    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    dimpase
    попробуй отдельно скопировать xcopy /o только папку
    а потом xcopy /o subdir

    Всего записей: 1072 | Зарегистр. 07-09-2009 | Отправлено: 12:49 26-12-2009
    king_stiven

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

    Цитата:
    пользуюсь командой xcopy с ключом О

      /S           Копирует все папки и подпапки, кроме пустых.
      /E           Копирует все папки и подпапки, включая пустые.

    Всего записей: 2167 | Зарегистр. 17-07-2006 | Отправлено: 13:29 26-12-2009
    mugil_cephalus

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

    Цитата:
    /S           Копирует все папки и подпапки, кроме пустых.  
      /E           Копирует все папки и подпапки, включая пустые.

    он, думаю, эти ключи использовал, - дело наверное в чем то другом?.. может в правах?

    Всего записей: 1072 | Зарегистр. 07-09-2009 | Отправлено: 14:18 26-12-2009
    mugil_cephalus

    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    нам в шапку не нужно?
     
    Добавлено:
     
    отредактировал до "версии" 2 - еще добавил кодов
     
    отредактировал до "версии" 3 - еще добавил кодов
     
     
     
    часть 1 Подробнее...
     

    Всего записей: 1072 | Зарегистр. 07-09-2009 | Отправлено: 17:50 26-12-2009 | Исправлено: mugil_cephalus, 21:34 26-12-2009
    mugil_cephalus

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

    Всего записей: 1072 | Зарегистр. 07-09-2009 | Отправлено: 21:31 26-12-2009 | Исправлено: mugil_cephalus, 21:34 26-12-2009
    TechnicsKuzya



    Full Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Кому необходимо запускать, с помощью 32-битного sfx-модуля 7-Zip (или любого другого 32-битного приложения), cmd-скрипт ориентированный на обработку 64-битным cmd.exe, вот рабочее решение:
     
    К примеру, есть скрипт Setup_64.cmd, ориентированный на использование 64-битной версии cmd.exe.  
     
    В папку Tools помещаем 64-битный cmd.exe из папки C:\Windows\System32 (копировать только через 64-битный софт, иначе будет редирект в папку C:\Windows\SysWow64 и Вы скопируете 32-битный cmd.exe).
     
    Подтверждением того, что Вы используете 64-битную версию коммандного процессора, может служить его соответствующее отображение в диспетчере задач, т.е. без идентификатора *32.  
     
     
    Создаем скрипт, к примеру Start.cmd c содержанием:
     

    Код:
    @echo off
    .\Tools\cmd.exe /Q /K "call Setup_64.cmd"
    exit

     
    Теперь запускаем с помощью sfx-модуля - скрипт Start.cmd - он будет запущен с помощью 32-битной версии cmd.exe (В диспетчере задач увидете cmd.exe *32), а скрипт Start_64.cmd уже будет вызван с помощью 64-битной версии cmd.exe (в диспетчере задач увидете рядом с cmd.exe *32 - cmd.exe) - это и будет среда выполнения скрипта Start_64.cmd.

    ----------
    Все гениальное, просто!
    TechnicsKuzya site

    Всего записей: 495 | Зарегистр. 02-02-2008 | Отправлено: 09:08 27-12-2009 | Исправлено: TechnicsKuzya, 12:05 27-12-2009
    GORA2



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

    Цитата:
    64-битный cmd-скрипт

    А что это такое? Чем отличается от обыкновенного, как и чем его создавать?

    Всего записей: 1271 | Зарегистр. 26-01-2006 | Отправлено: 09:20 27-12-2009
    TechnicsKuzya



    Full Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    GORA2, под 64-битной версией Windows XP/Vista/7.
    В вышеуказанных версиях Windows - есть режим эмуляции 32-битной среды. По-умолчанию, вы создаете скрипт и тестируете его работу в 64-разрядном приложении cmd.exe, но если Вы захотите его упаковать, к примеру с помощью 7-zip (sfx-модуль в данном архиваторе, пока что 32-разрядный), то возможно нарушение работы скрипта, т.к. 32-разрядный модуль sfx, будет вызывать 32-разрядную версию cmd.exe для обработки скрипта, при этом происходит изменение переменных среды для 32-битного режима.
     
    Коротко, если Вы хотите полноценно использовать 64-битную систему (доступ ко всем системным папкам, реестру и т.д.), cmd-скрипт необходимо запускать только с помощью 64-битной версии cmd.exe
     
    Если в таких системах пользоваться проводником или 64-битным файловым менеджером, то:
    64-bit cmd.exe - расположен в %WinDir%\System32\cmd.exe
    32-bit cmd.exe - расположен в %WinDir%\SysWOW64\cmd.exe
     
    При запуске cmd.exe из %WinDir%\SysWOW64\cmd.exe при попытке обращения к папке %WinDir%\System32 из командного процессора, Вы будете перенаправлены в папку %WinDir%\SysWOW64, т.к. 32-битное приложение не должно работать с папками предназначенными для 64-битных приложений. В принципе, в Vista/Seven x64 уже есть способ обхода данного ограничения, в XP x64 - только с применением специального технического обновления. Вышеуказанный способ универсальный для вышеуказанных систем.  
     
    P.S. Выше я некорректно описал суть. Поэтому "64-битный cmd-скрипт" заменил на "cmd-скрипт ориентированный на обработку 64-битным cmd.exe", так точнее.

    ----------
    Все гениальное, просто!
    TechnicsKuzya site

    Всего записей: 495 | Зарегистр. 02-02-2008 | Отправлено: 11:14 27-12-2009 | Исправлено: TechnicsKuzya, 11:27 27-12-2009
    GORA2



    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    TechnicsKuzya
    Из вашего объяснения следует, что ни каких отличий в самих файлах скриптов не существует. Эти файлы ни чем не отличаются в версиях х86/х64. Различаются переменные среды в зависимости от режима запуска самого скрипта. Тогда так и надо говорить, не вводя новых понятий "64-битный cmd-скрипт".

    Всего записей: 1271 | Зарегистр. 26-01-2006 | Отправлено: 11:28 27-12-2009
    TechnicsKuzya



    Full Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    GORA2, я уже исправил свою ошибку.
     
    Различаются не только переменные среды, но и возможности доступа к папкам. В скрипт предназначенный для 64-битной среды также не помешает добавить проверку переменной PROCESSOR_ARCHITECTURE, иначе, при запуске, для примера, из традиционного файлового менеджера TotalCommander 32-bit, также могут возникнуть проблемы. Вышеуказанный скрипт способен их решить. Кроме того, приведенный код скрипта можно объединить с основным кодом, и тем самым получить универсальный скрипт, который будет корректно работать при запуске хоть из 32-битного приложения, хоть из 64-битного.

    Всего записей: 495 | Зарегистр. 02-02-2008 | Отправлено: 11:33 27-12-2009 | Исправлено: TechnicsKuzya, 11:42 27-12-2009
       

    Страницы: 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 109 110 111 112 113 114 115 116 117

    Компьютерный форум Ru.Board » Операционные системы » Microsoft Windows » Задачи на bat-файлах 7
    vu1tur (25-01-2010 12:41): лимит страниц, продолжение: http://forum.ru-board.com/topic.cgi?forum=62&topic=19668


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

    Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
    Modified by Ru.Board
    © Ru.Board 2000-2020

    BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

    Рейтинг.ru